Linux
Apache2:嘗試將子域映射到子目錄
所以基本上我想要:sub.domain.com/任何東西-> domain.com/asub/任何東西
我對此有點陌生,有點困惑。我做的第一件事是配置我的 DNS 設置,因此 sub.domain.com 使用 CNAME 轉到 domain.com(A 記錄和 IP 會更好嗎?)
接下來,我進入了我的 VirtualHost 文件並擁有:
RewriteEngine on RewriteCond %{HTTP_HOST} www.(.+) [NC] RewriteRule ^/(.*) http://domain.com/$1 [R] RewriteCond %{HTTP_HOST} ^sub.domain.com RewriteRule ^/(.*) http://domain.com/asub/$1 [R]
所以第一條規則是為了處理www。並確保它被正確擷取並且有效。
第二條規則是我為子域映射添加的,它似乎沒有做任何事情
由於您可以訪問 apache 配置,我建議您使用單獨的虛擬主機;這可以防止在您的重寫/重定向中循環。
您還必須轉義匹配模式中的任何特殊字元。並正確錨定您的模式!
<VirtualHost *:80> ServerName www.example.com ServerAlias sub.example.com RewriteEngine on #RewriteCond %{HTTP_HOST} ^www\. [NC] RewriteRule ^/(.*) http://example.com/$1 [R] RewriteCond %{HTTP_HOST} ^sub\.example\.com$ RewriteRule ^/(.*) http://example.com/asub/$1 [R] </VirtualHost> <VirtualHost *:80> ServerName example.com DocumentRoot /var/www/htdocs ... </VirtualHost>
評論是經過深思熟慮的;取決於你是否想要 www。或子。要匹配此處未涵蓋的任何請求,請註釋掉另一個請求,它將成為anythingelse.example.com 的預設設置。