2

我正在使用 qtranslate 运行一个 WP 博客。它允许我创建多种语言的帖子。

1. 没有 qtranslate 的示例 URL:

2. 具有本地化内容的示例 URL:

不幸的是,搜索引擎等仍然记得我的旧链接 (1.),这些仍然可以访问。所以“www.mysite.com/post1”现在显示我的英文内容而没有重定向。但它应该做的是301用户到“www.mysite.com/en/post1”。

所以现在我需要一个规则来检查 URL 中是否有 / en /post1 或 / de /post1 ,否则重定向到备用 / en /post1 URL。有一个例外,因为“/ 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]

可能有更好的方法可以做到这一点,但它确实有效。感谢大家最初的帮助!

4

3 回答 3

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 不够熟悉,无法确定是否可行)。

于 2012-02-10T04:43:46.427 回答
0

仅使用元规范怎么样?

像这样:

<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish" />

更多信息:http: //googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html

于 2012-02-10T16:02:31.917 回答
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]

可能有更好的方法可以做到这一点,但它确实有效

-- 更新这包括对更长 URL 的支持 ---

RewriteRule ^([a-zA-Z0-9\-\_]{3,}(/|$).*)$ en/$1 [R=301,L]
RewriteRule ^(.+[^/])/$ http://%{HTTP_HOST}/$1 [R=301,L]
于 2012-02-11T15:15:12.870 回答