2016-04-20 63 views
1

我有一大堆域需要指向一臺服務器,並且它們都有一個類似的域,每個域只有城市發生變化。htaccess對類似域名的重寫規則

每個城市在服務器上的一個單獨的文件夾,因此,例如/紐約將成爲「shoppinginnewyork.com」和/加州「shoppingincalifornia.com」

有沒有辦法,我可以設置一個正則表達式的方式規則爲任何未來的域名,以便它會自動拿起城市,並重定向或重寫到新的域名?他們將全部以 「shoppingin」 ..

感謝

+0

是指所有域指向相同的目錄或不同的目錄? –

+0

每個站點都在不同的目錄中,即/ sites/newyork和/ sites/california – Tim

+0

您可以嘗試在rewrite中使用regexp,例如在重寫cond中使用這個'shoppingin(。*)\。com'並使用此輸入' $ 1'如果我沒有錯誤的下一個cond檢查存在dirrectory,你可以在重寫規則中使用這個'$ 1'來更新請求。 – Naumov

回答

1

您可以使用您的虛擬主機的ServerAlias指令通配符:

看看下面的apache virtualHost配置:

<VirtualHost *:80> 

    ServerAlias shoppingin*.com 

    DocumentRoot "/sites" 

    # Then rewrite subdomains into different directories 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^shoppingin(.*).com$ 
    # Use the %1 captured from the HTTP_HOST 
    # For example shoppinginnewyork.com writes to /sites/newyork 
    RewriteRule ^(.*)$ "/sites/%1/$1" [L] 
</VirtualHost> 

在本地機器上對兩個域進行測試。

+0

此時'%1 /%1'的目的是兩次? – Martin

+0

@Martin有%1和$ 1 - %1會匹配http主機的(*),而$ 1會將url重寫到特定文件夾... –

+0

哈哈,對不起,再次看着我的眼睛以前看到兩個百分比符號,而不是一個百分比和一個美元。謝謝你的信息 :) – Martin