以下是我在htaccess文件中的重定向规则。他们将https://olddomain.com重定向到https://subdomain.domain.com但是网页没有被重定向。我还在加载olddomain.com/page1
`RewriteCond %{HTTP_HOST} ^old.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.old.com$
RewriteRule ^/?$ "https://subdomain.domain.com/" [R=301,L]`
我添加了以下规则,该规则部分有效,域后的斜杠缺失。现在重定向是https://subdomain.domain.compage1而不是https://subdomain.domain.com/page1
RewriteRule ^ https://subdomain.domain.com/{REQUEST_URI} [L,R=301]
如何解决这个问题。请帮忙。(我尝试重定向没有转义在最后,但这没有工作。
RewriteRule ^ https://subdomain.domain.com{REQUEST_URI} [L,R=301])
RewriteCond %{HTTP_HOST} ^old.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.old.com$
RewriteRule ^/?$ "https://subdomain.domain.com/" [R=301,L]
这些只重定向主页(根目录)。要将任何url路径重定向到目标的相同url路径,请使用以下命令:
RewriteCond %{HTTP_HOST} ^(www.)?old.com [NC]
RewriteRule ^ https://subdomain.domain.com%{REQUEST_URI} [R=301,L]
我已经把你的两个条件结合起来了。
注意语法是%{REQUEST_URI}
(带有%
前缀)来引用REQUEST_URI
服务器变量。"{REQUEST_URI}";否则就是文本。
不需要用反斜杠转义替换字符串中的所有字符。
在测试前清除浏览器缓存。最好使用302(临时)重定向进行测试,以避免潜在的缓存问题。
我添加了以下规则,这是部分工作,斜杠后域缺失。现在重定向是
https://subdomain.domain.compage1
而不是https://subdomain.domain.com/page1
RewriteRule ^ https://subdomain.domain.com/{REQUEST_URI} [L,R=301]
除非这是不可能的指令,如前所述-你可能会看到缓存响应作为早期错误的重定向的结果。301(永久)重定向被浏览器永久缓存。始终使用302(临时)重定向进行测试,最好禁用浏览器缓存("网络"选项)。选项卡)。
替代解决方案这需要放在根.htaccess
文件中(如果它在子目录.htaccess
中,它将不起作用,不像上面的规则)。
RewriteCond %{HTTP_HOST} ^(www.)?old.com [NC]
RewriteRule (.*) https://subdomain.domain.com/$1 [R=301,L]
使用反向引用而不是REQUEST_URI
服务器变量。
这个重定向需要放在.htaccess
文件的顶部,在大多数其他指令之前。
请确保在测试前清除了浏览器缓存