所以基本上我想有:sub.domain.com/ 什么 – > domain.com/asub / 什么
我对此有点新,有点困惑。 我做的第一件事就是configuration我的DNS设置,以便sub.domain.com使用CNAME访问domain.com(Alogging和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的configuration,我会build议你使用单独的虚拟主机; 这可以防止重写/redirect中的循环。
您还必须转义匹配模式中的任何特殊字符。 把你的模式固定好!
<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的默认设置。