我正在使用qtranslate运行WP博客。它允许我用多种语言创建帖子。
1。没有qtranslate的示例网址:
www.mysite.com/post1
2。具有本地化内容的示例URL:
www.mysite.com/ en / post1(英语 - 我的默认和后备)
www.mysite.com/的德 / POST1
不幸的是搜索引擎等仍然记得我的旧链接(1.),这些仍然是可访问的。因此,“www.mysite.com/post1”现在显示我的英文内容,没有重定向。但它应该做的是301用户“www.mysite.com/en/post1”。
所以现在我需要一个规则,基本上检查URL中是否有/ en / post1或/ de / post1,否则重定向到后备/ en / post1网址。有一个例外,因为“/ shop ”是一个真正的子目录,不需要在语言信息之前。
- 更新 -
我做到了!这实际上很有趣,但我花了很长时间才弄明白。
RewriteRule ^$ en [R=301,L]
RewriteRule ^([a-z]{2})/{1}$ $1 [R=301,L]
RewriteRule ^([a-zA-Z0-9\-\_]{3,})(/|$)$ en/$1 [R=301,L]
可能有更好的方法可以做到这一点,但它可以解决问题。感谢大家的初步帮助!
答案 0 :(得分:1)
您是否尝试过使用通用RewriteRule,并使用RewriteConds来消除您不希望重写的情况?
它会像:
RewriteCond %{REQUEST_URI} !^/shop(/|$)
RewriteCond %{REQUEST_URI} !^/(en|de)(/|$)
RewriteRule ^(.*)$ /en/$1 [R=301]
但根据Camilo的建议,你可以将中间线改为
RewriteCond %{REQUEST_URI} !^/[a-z]{2}(/|$)
只要您可以确保您的帖子永久链接不会少于三个字符(我对WordPress不够熟悉,以确定是否可行)。
答案 1 :(得分:0)
使用meta规范怎么样?
像这样:
<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish" />
更多信息:http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html
答案 2 :(得分:0)
我做到了!这实际上很有趣,但我花了很长时间才弄明白。
RewriteRule ^$ en [R=301,L]
RewriteRule ^([a-z]{2})/{1}$ $1 [R=301,L]
RewriteRule ^([a-zA-Z0-9\-\_]{3,})(/|$)$ en/$1 [R=301,L]
可能有更好的方法来做到这一点,但它可以解决问题
- 更新这包括支持更长的网址---
RewriteRule ^([a-zA-Z0-9\-\_]{3,}(/|$).*)$ en/$1 [R=301,L]
RewriteRule ^(.+[^/])/$ http://%{HTTP_HOST}/$1 [R=301,L]