如果 url 不包含子字符串,如何将路径添加到 url

法律

如果 URL 不包含子字符串,我需要将所有请求重定向https://example.com/*https://example.com/test/*test

到目前为止,我有这些重写规则

RewriteBase /

RewriteCond %{THE_REQUEST} !^/test
RewriteRule ^/?$ /test/$1 [R=301,L] # if the url does not contain test, redirect to url with test

RewriteCond %{THE_REQUEST}% test
RewriteRule ^test?(.*)$ /$1 [L] # mask the fact that the url is not https://example.com/ and instead is https://example.com/test but apache serve the website like if it was on root

如果我访问https://example.com它会重定向到https://example.com/test但由于第二条规则而给出无限循环。

我该如何组合它,所以请求https://example.com/test*不要被重定向,但这些请求https://example.com/*不需要更改 www 根目录,因此它适用于所有 URL。

怀特先生

更新:

测试应该在 url 中(为了用户体验),但是 apache 应该像不在 url 中一样路由,而是请求到达根 url,因此应用程序路由在内部保留,而无需更改应用程序本身。

喔好吧。但是,您应该链接到/test您的应用程序中的 URL(因此您仍然需要“更改应用程序”,尽管您最后发表了评论),否则/test实际上不在用户和搜索引擎在页面上看到的 URL 中(他们将被重定向),并且您的用户每次单击您的链接之一时都会体验到外部重定向(对 SEO 和用户体验不利)。

.htaccess为“旧” URL 添加前缀的“重定向”/test仅用于 SEO - 与任何“旧”到“新” URL 更改一样。(您的应用程序不需要/test在 URL 路径中运行 - 因为您的内部 URL 应该已经包含/test.)

试试这样:

RewriteEngine On

# Insert "/test" at the start of the URL-path if absent in "direct" requests
RewriteRule %{ENV:REDIRECT_STATUS} ^$
RewriteRule !^test/ /test/$1 [R=301,L]

# Rewrite "/test" URLs back to root
RewriteRule ^test(?:$|/(.*)) /$1 [L]

REDIRECT_STATUS环境变量用于防止重定向循环这在来自客户端的初始请求中为空,并在重写后设置为 HTTP 响应状态(如下)。

首先使用 302(临时)重定向进行测试,只有在您确定它按预期工作时才更改为 301(永久)。

您需要在测试前清除浏览器缓存。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将包含特定字符串的URL添加到数组中?

如果url有更多字符串,则将类添加到<body>

如何将当前查询字符串添加到Django模板中的URL?

Node.js + express 如何将字符串添加到请求 url 中?

如果 url 包含数字,则将链接添加到 div

jQuery(如果存在Url字符串),然后将其作为href添加到另一个元素

将字符串添加到url python

将字符串添加到提交的URL的末尾?

如何将Django应用的URL字符串添加到数据库并随机选择?

如果在javascript中未定义协议,如何将http://添加到url?

如果URL不包含特定字符串,则HTACCESS重定向

如果url哈希不包含任何字符串,请执行功能

如果url不包含某些字符串,则htaccess重定向

如果url不包含数组中的字符串,则执行函数

如果 class true 将 url 添加到 iframe 并处理 url 列表,然后重复?

如何将许多包含公共字符串的URL重写为相应的替代路径?

htaccess,如果URL包含字符串而无需更改URL即可重定向到页面

如果url不包含特定路径,则应用重写规则

如果 http:// 不存在於包含多個 URL 的字符串中,如何添加它

如何使用nuxt动态路由将字符串添加到url的末尾

如果URL包含字符串A但不包含字符串B,则重定向

如果 url 包含某个目录,则返回 url 的结尾

如果URL包含参数,则htaccess重定向到基本URL

如果问号已经存在,如何在URL中添加随机字符串以防止缓存?

如果column包含字符串,如何将列标题添加到新列

如果URL包含“ /?&”,Nginx重定向

.htaccess重定向(如果URL包含日期)

如果URL包含“ default.aspx”,则单击

如果缺少,请添加站点 url