2012-07-04 33 views
0

我試圖寫一個檢查1號路段上的比賽我的.htaccess文件的規則,將檢查最後一段!= EN,然後取代最後一段。mod_rewrite的匹配1日和最後一個路徑段和替換最後一個

例如

轉換

/ZH /事/ somethingelse /德/

/ZH /事/ somethingelse/EN/

如果最後一個區段已經/ EN /中規則不需要應用。 第一個和最後一個之間可以有更多或更少的路徑段。

我想這在目前

RewriteRule /zh.*/([^/]+)/(?!^en$).*$ /zh/$1/en/ [R=301,L] 

,但它給我

/ZH/EN/EN/

的結果

+0

是不是因爲'。*'太貪婪了? – 0xC0000022L

回答

0

也許改變正則表達式並加入到防止循環條件上/en/

RewriteCond %{REQUEST_URI} !/en/?$ 
RewriteRule ^/zh[^\/]*/(.*)/[a-z]{2}/?$ /zh/$1/en/ [R=301,L] 

注意:如果在.htaccess文件中使用此功能,並且您使用的是apache 2.0+,則需要將主導斜槓從^/zh刪除爲^zh

+0

工作!非常感謝 - 嘗試了很長時間才自行解決,但沒有運氣 - 我非常感謝終於有解決方案!現在我只需要仔細研究一下,試着理解它的邏輯。 –

相關問題