我還沒有答案,所以我在這裏發佈。.htaccess正則表達式問題
我想在.htaccess文件匹配的root/language/sub/.../document
形式的URL,然後把它改寫爲root/sub/.../document.php?lang=language
進出口接近擊中,但似乎我的正則表達式不「抓」輸入網址。這裏是:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond ^[a-z]{2}.*$/%{REQUEST_FILENAME}\.php -f
RewriteRule ^([a-z]{2})/(.*)$ $2.php?lang=$1
有人可以指出我這裏有什麼問題嗎?我不是regexp專家,也不是apache重寫。
Tyvm
*編輯*
root
代表域即mydomain.net
這裏有幾個例子:
mydomain.net/fr/contact
應rewriten到
mydomain.net/contact.php?lang=fr
和
mydomain.net/en/articles/view
應rewriten
等等
TYVM。現在無法查看,但明天肯定會通知您。現在我還有最後一個問題。如果我添加一些其他的GET變量,它們應該被添加到'lang = foo'參數中。所以它看起來像我= =在字符串的末尾搜索'\?。*',如果這樣添加'&lang = foo',或者添加'?lang = foo'。這樣我就不會失去GET行爲。我想你可以在你之前添加一個'RewriteRule'行?或者我需要爲每個'RewriteRule'製作另一塊'RewriteCond'?謝謝,我彈出你接受的答案^^ – PinkTurtle
(只是爲了澄清一點)'%{REQUEST_FILENAME}'包含完整的URI,即'mydomain.net/fr/contact'嗎?如果不是,那麼'(。*/|)'(第二行)對我來說沒有任何意義,因爲lang會成爲第一個url _bit_。另外,在'(。*/|)'中,管道'|'是什麼?我明白'(。* /)'匹配以'/'結尾的所有內容。狂猜:可選條件?感謝您的幫助。 – PinkTurtle
@JulienMatthey - 標記'[QSA]'會自動處理''''''''問題,不用擔心:)關於你關於'(。*/|)的問題' - 這將匹配任何結尾用'/'先前的語言縮寫,或空字符串是沒有什麼,所以'|'是**或**運算符在這裏。我希望這有幫助。 –