有一個關於使用mod_rewrite重定向特定子域以使用另一個域的問題。我正在尋找儘可能最短的方法來做到這一點,而無需爲我的每個域名創建單獨的重寫規則。我將添加許多新的域名(總共大約20-30個域名)。將多個子域重定向到另一個域名
所以我們假設我的主域名是example.com,並且我希望使用該域名來處理所有事情。因此,如果使用我的其他域中的任何一個,它們將自動重定向到主域,從而保留子域前綴和URL路徑。
實施例:
test.example.org => test.example.com
test2.example.co.uk => test2.example.com
test3.example.net/hello/world。 PHP => test3.example.com/hello/world.php
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.([a-zA-Z]+)\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1\.example.com/$1 [R=301,L]
我不確定如果上面將正確,或者如果它是正確的語法工作。但基本上,我希望它與子域前綴匹配,然後匹配任何域名和任何TLD(.org,.info,.biz,.co.uk,.net等)。我會假設它需要首先確保它不是正確的主域(example.com),以防止無限重定向循環。
此外,是否有可能檢查HTTPS是否打開或關閉並正確設置重定向?如果沒有,我總是可以將HTTPS設置爲ON。
對不起,這個混淆,雖然我想確保我第一次得到這個權利,而不需要編程每個域到.htaccess。
謝謝! :)
使用這個例子,它的工作。我只需要做一些進一步的測試,以確保它能夠按照需要正確工作。感謝您的詳細回覆! – 2012-02-23 18:08:43
你知道第一個規則是如何工作的嗎?字符串是ons還是offs,所以在%1 =「s」或者「」上得到'^ ..(s?)'結果,因此env變量PROTO得到了正確設置。 Cond2A防止'* .example.com'上的循環和cond2B文件上的子域。 Rule2B把它放在一起。如果它能夠工作,那麼這個刻度線會很好:-) – TerryE 2012-02-23 18:14:19
它完美的工作,我理解這個概念。我遇到的一個問題是,有人去過example.org,直到他們導航纔會停留在example.org。我嘗試了其他技巧,但是我無法將它改爲主要的「example.com」。 – 2012-02-23 18:43:03