2013-10-17 57 views
2

我做了自動創建子域的腳本。htaccess自動檢測域名

htaccess工作正常, 但問題是,我需要手動更改域名時安裝在新域

我想在htaccess中自動檢測域名,這可能嗎?

所以當添加到另一個服務器或新域時,不需要再次更改域根htaccess

域根htaccess的是:

RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9][-a-z0-9]+)\.mydomain\.com(:80)?$ [NC] 
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com 

我嘗試自動改變從%{HTTP_HOST}

RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9][-a-z0-9]+)\.%{HTTP_HOST}(:80)?$ [NC] 
RewriteCond %{HTTP_HOST} !^www\.%{HTTP_HOST} 

得到問題是%{HTTP_HOST}, 如何獲得與htaccess的當前URL /匹配當前域?

也許需要得到域名作爲變量

謝謝

+0

請張貼輸入HTTP請求的域的一個例子,它應該是什麼重定向到,因爲你現在不知道匹配'%{HTTP_HOST}'作爲一個更大的域的子字符串,它也包含'%{HTTP_HOST]' –

+0

謝謝,用原始htaccess更新並嘗試使用{HTTP_HOST } – Andy

+0

@Andy:發佈這些子域名的一些例子,你想捕獲什麼? – anubhava

回答

2

我相信這應該RewriteCond爲你工作:

RewriteCond %{HTTP_HOST} ^(?:www\.)?((?!www\.)[^.]+)\.([^.]+\.[^.]+)$ [NC] 

因此,對於前;與一個URL如http://www.sub.domain.com它將捕獲在%1變量和domain.com%2變量。

+0

如何捕獲domain.com? – Andy

+1

所以你想從'www.sub.domain.com'或'sub.domain.com'獲取'domain.com'? – anubhava

+0

是的, 也可以同時捕獲'sub'和'domain.com'? 的主要目的是,當在另一個域中設置時,我不會在htaccess中手動更改域。 謝謝 – Andy

0

除了anubhava的答案,如果您需要捕獲的URL的其餘domain.com%3,你可以使用下面的RewriteCond

RewriteCond %{HTTP_HOST} ^(?:www\.)?((?!www\.)[^.]+\.)?([^/.]+\.[^/.]+)/?([^/]+)?$ [NC]