我想设置从/abc/*
到http://newdomain.com/xyz/*
的htaccess HTTP 301重定向。
我正在尝试使用此重写规则,但未按预期工作:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/abc/(.*)?$ [NC]
RewriteRule ^ http://newdomain.com/xyz%{REQUEST_URI} [R=301,L]
</IfModule>
它将/abc/test
重定向到http://newdomain.com/xyz/abc/test
。如何更改重写规则以从请求uri中删除abc
部分?
答案 0 :(得分:1)
更改此行:
RewriteRule ^ http://newdomain.com/xyz%{REQUEST_URI} [R=301,L]
至:
RewriteRule ^ http://newdomain.com/xyz/%1 [R=301,L]
因为第一行中的%{REQUEST_URI}
包括/abc/
,所以您应该将其与URI分开。
您的所有规则应如下所示:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/abc/(.*)?$ [NC]
RewriteRule ^ http://newdomain.com/xyz/%1 [R=301,L]
</IfModule>
因此,%1
代表(.*)?
中/abc/
之后的RewriteCond
您也可以像下面这样总结这个规则:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^abc/(.*)$ http://newdomain.com/xyz/$1 [R=301,L]
</IfModule>
注意:清除浏览器缓存测试