2011-01-28 41 views
1

我需要一個未知的子域轉換爲一個變量,因此以下將適用:現代重寫 - 高級問題

  • http://test.example.com/http://www.example.com/?domain=test

  • http://xyz.example.com/http://www.example.com/?domain=xyz

  • http://www.example.com/http://www.example.com/

  • http://www.example.com/pageA/http://www.example.com/pageA/

  • http://fish.example.com/pageB?somevar=somethinghttp://www.example.com/pageB?somevar=something&domain=fish

  • http://www.example.com/pageB?somevar=somethinghttp://www.example.com/pageB?somevar=something

  • http://fish.example.com/pageBhttp://www.example.com/pageB?domain=fish

正如你可以看到所有我需要做的是更換任何子站點www並將子域名添加爲名爲的域名爲的獲取變量。

我真的失去了這個。

編輯:哦我還希望用戶仍然可以看到url中的子域,而不是重定向。

回答

1

試試這個:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^([a-z]+)\.example\.com$ 
RewriteCond %1 !=www 
RewriteRule^http://www.example.com%{REQUEST_URI}?domain=%1 [QSA] 
+0

這會保留其他的變量嗎?例如?var = test&domain = xx – DwayneBull 2011-01-28 14:32:28

0

我會用:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !=www.example.com 
RewriteCond %{HTTP_HOST} ^(www\.|)(.+)\.example\.com$ 
RewriteRule ^.*$ http://www.example.com/$1?domain=%2 [QSA] 

這也將改寫www.fish.example.com...?domain=fish