在htaccess RewriteRule重定向中排除子字符串

时间:2014-07-21 06:55:29

标签: .htaccess rewrite

我管理一个具有多个同名域名的旧网站, 谷歌已经使用语言结构索引了一些旧网址

http://www.example.com/eng/whatever

http://www.example.it/eng/whatever

现在我不再使用这个结构,但我想重定向到我的新结构

http://www.example.it/en/whatever

所以 / eng / 之后的所有内容都必须附加到新结构中,排除 / eng / 子字符串。 但它不起作用,我有一个重定向

http://www.example.it/en/eng/whatever

哪个错了!我不想在重定向网址

中使用 / eng

在我的.htaccess中我有这个

#this will redirect the url with /eng/whatever to www.example.it/en/whatever, regardless from the top level domain
RewriteRule ^eng\/(.*)$ http://www.example.it/en/$1 [R=301,L]

#redirect example.com on www.example.it/en/
RewriteCond %{HTTP_HOST} ^([^.:]+\.)*example\.(com|pt)?(:[0-9]*)?$ [NC]
RewriteRule ^(.*)$ http://www.example.it/en/$1 [R=301,L]

1 个答案:

答案 0 :(得分:1)

尝试用以下方法替换所有内容:

RewriteRule ^eng/(.*) en/$1 [R,L,NE,DPI]

如果有效,您可以将R更改为R=301

警告

要对此进行测试,您必须使用新的浏览器。这是因为浏览器缓存301重定向,因此您的当前浏览器将继续重定向到旧的(错误的页面),甚至无需与您的服务器通信并点击新的.htaccess - 除非您清除浏览器缓存。