将旧域重定向到新域- rewriterrule



以下是我在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文件的顶部,在大多数其他指令之前。

请确保在测试前清除了浏览器缓存

相关内容

  • 没有找到相关文章

最新更新