2014-12-02 69 views
1

我有一個帶有服務器和多個別名的apache虛擬主機。服務器是生產/活動域,別名是開發和登臺服務器。例如:具有多個別名/域的Apache主機重寫規則

ServerName foo.bar 
ServerAlias dev.superfoo.bar 
ServerAlias stage.superfoo.bar 

是否有將保持域,不管它可能是,只是重定向人域/ EN-US /什麼域/ EN /任何一個重寫規則?

我相信^/en-us /(.*)$ foo.bar/en/1$會爲一個域做伎倆。有沒有辦法保留域名,而不是爲每個別名編寫規則?

回答

1

爲了確保正確的域保留在每一個,你可以使用%{HTTP_HOST}變量重定向:

RewriteEngine On 
RewriteRule ^/en-us/(.*)$ http://%{HTTP_HOST}/en/$1 [L,R=301] 

[R=301]標誌問題的永久301重定向,但在測試中,你可能需要使用302因爲瀏覽器可能積極地緩存重定向,從而難以調試。

上面我使用了領先的/,如^/en-us。如果您在VirtualHost級別使用此規則,這將是必需的。但是,如果你在你的文檔根目錄使用.htaccess文件裏面,你必須不包括/,如:

RewriteEngine On 
RewriteRule ^en-us/(.*)$ http://%{HTTP_HOST}/en/$1 [L,R=301] 

被注意到RewriteRule手冊in the "what is matched" section的有關規則。

+0

感謝您的簡潔和書面答覆。並感謝您的鏈接。我覺得自己沒有發現這種感覺很愚蠢。我無法正確寫出我想要搜索的內容。 – peeDee 2014-12-02 04:02:54