2010-10-16 96 views
2

我需要將每個子域重定向到它所屬的域中,使用mod_rewrite將子域名改爲參數,我不知道如何。另外,我需要「重新索引」這些參數,以便子域名成爲uri的第一個參數,uri的其他參數按照它們自己的順序跟隨它。事情是這樣的apache - 將子域重定向到另一個域

category.domain.com/search/flowers 

domain.com/category/search/flowers 

就如何實現這一目標使用mod_rewrite有什麼想法?

乾杯!

回答

7

您可以爲所有的子域名與一個虛擬主機做到這一點:

<VirtualHost *:80> 
    ServerName category.domain.com 
    ServerAlias foo.domain.com bar.domain.com 

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} (.*).domain.com 
    RewriteRule (.*) http://domain.com/%1$1 [R=301,QSA,L] 
</VirtualHost> 

才能正常工作,你必須有一些設置爲服務器名稱,所以只選擇一個,並列出你的子域的其餘部分在ServerAlias線上。

您可以擁有多個ServerAlias行,因此如果您有大量的子域,則可以將它們分成多行以提高可讀性。

在RewriteRule中,%1匹配前面RewriteCond行中的第一個匹配模式。

+0

我沒有訪問權限,只是對一個普通的.htaccess – yoda 2010-10-16 20:47:23

+3

在這種情況下,只需將重寫的東西放在每個子域的.htaccess中即可。假設.htaccess中沒有任何其他內容,您需要保留個別子域,並且可以創建符號鏈接,您可以將這些內容放入.htaccess中的一個子域,並從其他子域創建符號鏈接。這樣你就不必在多個地方重複它。 – bradym 2010-10-16 21:08:05