Apache-2.2
apache上的虛擬主機指向domain.com,domain.net,domain.org都去domain.com
目前所有名稱都指向同一個 Web 伺服器文件夾,這是正確的。也就是說,domain.net、domain.org 等都可以在不重定向到主 .com 的情況下工作
如何訪問 .org 和 .net 以將瀏覽器重定向到 domain.com?
這應該是基本的,但我無法找出最好的方法。
我建議您使用
RewriteRule
frommod_rewrite
而不是使用Redirect
frommod_alias
。由於 mod rewrite 更加通用。<VirtualHost *:80> ServerName domain.org ServerAlias www.domain.org domain.net www. domain.net RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.)?domain\.(net|org)$ [NC] RewriteRule ^ http://domain.com%{REQUEST_URI} [L,R=301] </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot /path/to/documentroot ServerName domain.com ServerAlias www.domain.com ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common </VirtualHost>
確保您已
NameVirtualHost *:80
取消註釋。解釋:
RewriteEngine on
設置
RewriteEngine
開啟RewriteCond %{HTTP_HOST} ^(www\.)?domain\.(net|org)$ [NC]
匹配
%{HTTP_HOST}
:即:主機的基本 URL。欲了解更多資訊RewriteCond
並http headers
訪問:RewriteCond。[NC]
是一個標誌:’nocase|NC’(無大小寫)這使得測試不區分大小寫 - ‘AZ’ 和 ‘az’ 之間的差異在擴展的 TestString 和 CondPattern 中都被忽略了。此標誌僅對 TestString 和 CondPattern 之間的比較有效。它對文件系統和子請求檢查沒有影響。
此外,您還必須重定向以 WWW 開頭的 URL。這就是為什麼
^(www\.)
在模式中。RewriteRule ^ http://domain.com%{REQUEST_URI} [L,R=301]
domain.com
如果發生匹配,則將 URL 重寫為RewriteCond
。添加任何請求 URI(如果存在)。即這個請求的URI(相對於DOCUMENT_ROOT)。如果 URl 是:
domain.com/web/hello.php
那麼REQUEST_URI=/web/hello.php