2014-07-21 33 views
1

我管理的旧网站与具有相同名称的多个领域, 谷歌已经收录了一些旧的URL与语言结构排除在htaccess的重写规则的子重定向

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

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

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

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

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

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

这是不对的!我不想/英在重定向URL

在我的.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

尝试用这个刚刚更换了这一切:

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

如果一切正常,您可以将R更改为R=301

警告

要测试这个,你必须使用一个新的浏览器。这是因为浏览器缓存301重定向,所以您的当前浏览器将保持重定向到旧的(错误的页面),甚至没有与您的服务器通话并点击新的.htaccess - 无论您清除浏览器缓存。

+0

我测试过它,它的工作原理!我不知道NE和DPI的标志。 非常有用,谢谢! – loru88

+0

好的,我没有阅读规则,对不起 谢谢你的解释 – loru88