我正在使用的.htaccess下面的代碼來改變我的網站的語言:匹配正則表達式模式
RewriteRule ^en/?(.*) $1?locale=en_GB [QSA,DPI,L]
所以要顯示的頁面爲mysite.com/en/index.php
但事實上地址爲訪問者mysite.com/index.php?locale=en_GB
。
我使用正則表達式是不完全正確,但是,因爲我得到試圖訪問mysite.com/en/enquiry.php
(或mysite.com/ru/enquiry.php
,或任何其他語言也如此)當一個404錯誤。
即使讀取信息時regular-expressions.info和維基百科,以及使用各種JavaScript的正則表達式助手後,我不知道如何得到它的匹配en
,en/
或en/dir/pagename.php
,而忽略了與這樣en
開頭的任何單詞enquiry
或enquiry-send.php
。
什麼正則表達式,我應該使用,使任何下列地址的正常工作(這是幾個例子 - 頁面名稱可以包含連字符-
或下劃線_
):
mysite.com/en
mysite.com/en/
mysite.com/en/index.php
mysite.com/en/enquiry.php
mysite.com/en/enquiry-send.php
謝謝。
編輯
我有工作使用下面的表達式:
RewriteRule ^en(/?$|/(.*)) $1?locale=en_GB [QSA,DPI,L]
現在無法驗證,但'^/en /(.*)$ $ 1?locale = en_GB' – Viruzzo
不確定這是否行得通,因爲'en'後可能有也可能不是正斜槓。 – Chris
僅適用於'mysite.com/en';但是,你可以刪除它。 – Viruzzo