htaccess重定向特定的子文件夹

时间:2019-03-16 20:41:44

标签: .htaccess

我想设置从/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部分?

1 个答案:

答案 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>

注意:清除浏览器缓存测试