感謝@Ωmega,我幾乎完全(這裏.htaccess regular expression issue詳情)解決了我的前一個問題,來到了此解決方案:的.htaccess的RewriteCond小問題
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} ^(.*/|)(en|de|fr)(/|)$ [NC]
RewriteCond %1%3index.php -f
RewriteRule ^(.*/|)(en|de|fr)(/|)$ index.php?lang=$2 [NC,QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} ^(.*/|)(en|de|fr)(/.*|)$ [NC]
#RewriteCond $1$3.php -f
RewriteRule ^(.*/|)(en|de|fr)(/.*|)$ $1$3.php?lang=$2 [NC,QSA,L]
基本上,這些線路將在domain/language/sub/.../somepage
形式重寫任何東西到domain/sub/.../somepage.php?lang=language
。第一個區塊是domain/language/
形式的網址,有或沒有結尾/
,它被重定向到index.php
。
這個作品非常好壽兩個小毛刺保持它們是:
在第二塊(我#commented)只要不匹配,不管是什麼第三行。奇怪的部分是,它在第四行工作,即我的頁面實際顯示正常。這是否意味着
-f
參數在這裏是錯誤的?如果我輸入了
/
結尾的網址(第二塊而已,它與索引文件的工作),我重寫被打破,即輸出爲domain/language/sub/.../somepage/.php
有沒有辦法在輸入的網址中以排除潛在/
正則表達式?
謝謝您的反饋!
這個'^(。*/|)(en | de | fr)(/.*?)/?$'根本不匹配。這個'^(。*/|)(en | de | fr)(/.* |)/?$'最終會匹配,但問題是一樣的,結尾的'/'被第三個'並結束輸出'somepage/.php'。現在對於RewriteCond,它不起作用:(但真的不知道爲什麼。即使我的頁面正確顯示,然後我取消註釋'#RewriteCond%1%3.php -f',url不匹配怪異的 – PinkTurtle
parens裏面的'?'使它成爲一個非貪婪的搜索,所以最後一個'/?'不會被'。*'分組所吞噬 –
好吧,這可行,但你忘了提及僅在'RewriteRule'行進行修改,謝謝 – PinkTurtle