我的httpd.conf如下所示:
NameVirtualHost 12.34.56.78:80
<VirtualHost 12.34.56.78:80>
DocumentRoot /var/www/html/site
ServerName www.example.com
<IfModule mod_rewrite.c>
RewriteEngine On
...
</IfModule>
</VirtualHost>
<VirtualHost 12.34.56.78:80>
ServerName blog.example.com
DocumentRoot /var/www/html/blog
</VirtualHost>
Listen *:2194
<VirtualHost *:2194>
Redirect / http://mgr.example.com/
</VirtualHost>
我希望能够将“类别”启用为子域,即如果用户访问:
science.example.com
它应该向他显示该 URL 本身,但向他显示 www.example.com/science.php 的内容。
它不必采用通用/基于通配符的方法 - 这些类别将是我可以单独指定的少数。我只是不希望我添加的任何东西干扰网站的现有功能。
我怎样才能做到这一点?
答案1
添加:
ServerAlias *.example.com
到虚拟主机并采用以下重写规则:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^(www)\. [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com [NC]
RewriteRule (.*) http://www.example.com/%1 [R=301,L]
如果您已经有一个子域名,例如subsub.example.com
,明确设置为另一个虚拟主机的 ServerName/ServerAlias,它将优先于 wildxard 虚拟主机