2012-07-10 50 views
0

我有一個關於htaccess重寫規則的問題。.htaccess RewriteRule反向引用順序

是否有可能這個URL轉換:

www.site.com/en/test

在這樣的事情:

www.site.com/test.php ?語言= EN

我試圖用這個重寫規則

RewriteRule ^([a-z][a-z])/(.*)$ $1.php?language=$2 

但在一些在線測試工具的結果URL是:

www.site.com/en.php?language=test

預先感謝您。 墊子

回答

0

造成這種混淆的原因是你已經扭轉了比賽。當你使用引用時,匹配中的第一個引用總是$ 1,第二個引用是$ 2,依此類推。

這裏是你做了什麼,只是在括號中尋找:

([a-z][a-z]) = first match, places "en" in $1 
(.*) = second match, places "test" in $2 

所以,你只需要簡單地扭轉他們在你的輸出,這樣的:

RewriteRule ^([a-z][a-z])/(.*)$ $2.php?language=$1 
+0

謝謝你的快速回復。 我也嘗試改變反向引用順序(1美元與2美元),但沒有任何變化。 – user1514176 2012-07-10 09:10:19

+0

我使用此工具進行測試:http://martinmelin.se/rewrite-rule-tester/(如果您想嘗試) – user1514176 2012-07-10 09:12:56

+0

該工具無法正確處理反向引用。您可以輸入任意數字,它仍然會按照創建順序使用反向引用,而不是按照您指定的順序。在你說它不起作用之前,你需要在你的配置中真正嘗試它。 – 2012-07-10 11:57:26