2014-01-22 97 views
0

當用戶在頻道/ index.php文件?URL訪問test.domain.co.uk,我想向他們展示頁面=測試其中測試可任何東西。的.htaccess與子域和GET請求

我有這個用下面的代碼工作:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\.domain\.co\.uk$ 
RewriteCond %{HTTP_HOST} ^.+\.domain\.co\.uk$ 
RewriteRule ^(.*) %{HTTP_HOST}$1 [C] 
RewriteRule ^(.+)\.domain\.co\.uk/? channels/index.php?url=$1 [L] 

不過,我也想它的工作,如果你叫http://test.domain.co.uk/login/

而且它會告訴你頻道/ index.php文件?url = test & page = login

我試過幾種方法,它只是顯示它好像它是?URL =測試

+0

您是否只想重寫這兩個特定的網址,並保留其他所有網址?最有可能你有其他資源,如圖像,CSS,JS文件... – Minister

+0

這很好,我可以排序後。只是它的問題不起作用。 –

回答

0

添加

RewriteRule ^(.+)\.domain\.co\.uk(.+)$ channels/index.php?url=$1&page=$2 [L] 

到你的規則結束。並添加$到您的最後一條規則的模式:

RewriteRule ^(.+)\.domain\.co\.uk/?$ channels/index.php?url=$1 [L] 

然後繼續從循環,這增加了頂部:

RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteRule^- [L] 
+0

也嘗試了這一點,但$添加創建一個內部服務器錯誤? –

+0

**更正:**這會使得頁面的GET值等於channels/index.php –

+0

@TomWhale請參閱編輯,在規則的頂部添加另一個規則以防止循環 –

0

您可以使用此規則:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.co\.uk$ 
RewriteRule ^((?!channels/index\.php).*)$ /channels/index.php?url=%1&page=$1 [L,QSA] 
+0

試過類似的東西,只是給你一個內部服務器錯誤。 錯誤日誌「由於可能的配置錯誤,請求超出了10個內部重定向的限制」 –

+0

好吧現在嘗試更新代碼。 – anubhava

+0

再次感謝,但是「RewriteCond:無法編譯正則表達式」(?L^|&)url = [^&] +'「 –