Linux

Apache2:嘗試將子域映射到子目錄

  • October 24, 2013

所以基本上我想要: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 的預設設置。

引用自:https://serverfault.com/questions/548453