2014-08-30 32 views
3

我編寫了一個網站,我想成爲多種語言,各種語言應該可以通過子域訪問,例如en.example.com,de.example.com等。Mod_Rewrite設置子域和目錄爲GET變量

此外,我已經有一個重寫來設置一個「目錄」作爲GET變量,它將example.com/name改爲example.com/index.php?page=name。

無論我嘗試了什麼,我都沒有找到將這兩個代碼正確組合的必要性。每一個在自己的作品中,我只需要一個方法既結合,使en.example.com/name將被改寫,以example.com/index.php?page=name & LANG = EN

我用什麼對於目錄GET變量

RewriteRule ^/?(\w*)/?$ index.php?page=$1 [L] 

我發現子域GET變量

RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{REQUEST_URI} !index\.php 
RewriteCond %{HTTP_HOST} ^(.+?)\.example\.com$ 
RewriteRule .* /index.php?lang=%1 [L] 
+0

使用'QSA'標誌。 – hjpotter92 2014-08-30 12:35:49

+0

@ hjpotter92感謝提示,但是因爲我以前沒有使用過該標誌,並且示例僅在使用像example.com/name/?lang=en這樣的URL時纔會提示它,所以我似乎無法找到正確插入它的方法。你可能有一個例子,說明我的上述情況應該如何? – MoD366 2014-08-30 12:57:06

回答

3

你只需要你2個規則結合

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^((?!www\.)[^.]+)\.example\.com$ 
RewriteCond %{REQUEST_URI} !^/index\.php$ [NC] 
RewriteRule ^(.*)$ /index.php?page=$1&lang=%1 [L] 
+1

謝謝!用$ _SERVER數組解決這個問題,但是這對於將來的參考很有用:D – MoD366 2014-08-30 20:24:18