[英]Rewrite Rule to enforce default lang code in URL
我正在使用qtranslate運行WP Blog。 它使我可以創建多種語言的帖子。
1。 不含qtranslate的示例網址:
www.mysite.com/post1
2。 具有本地化內容的示例URL:
www.mysite.com/ zh / post1(英語-我的默認設置和后備廣告)
www.mysite.com/ de / post1
不幸的是,搜索引擎等仍然記得我的舊鏈接(1.),並且這些鏈接仍然可以訪問。 因此,“ www.mysite.com/post1”現在可以顯示我的英語內容,而無需重定向。 但是它應該對301個用戶執行“ www.mysite.com/en/post1”。
因此,現在我需要一個規則,該規則基本上檢查URL中是否存在/ en / post1或/ de / post1,否則重定向到fallback / 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]
可能有更好的方法可以做到這一點,但是可以解決問題。 感謝大家的初步幫助!
您是否嘗試過使用通用的RewriteRule並使用RewriteConds來消除不希望重寫的情況?
它會像這樣:
RewriteCond %{REQUEST_URI} !^/shop(/|$)
RewriteCond %{REQUEST_URI} !^/(en|de)(/|$)
RewriteRule ^(.*)$ /en/$1 [R=301]
但是根據卡米洛的建議,您可以將中間線更改為
RewriteCond %{REQUEST_URI} !^/[a-z]{2}(/|$)
只要您可以確保發布的永久鏈接不少於三個字符(我對WordPress不太熟悉,以確保是否可行)。
僅使用元規范怎么辦?
像這樣:
<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish" />
更多信息: http : //googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html
我做的!!! 這實際上很有趣,但花了我一段時間才弄清楚。
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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.