当存在其他“子域名”时重写 subdomain.domain.com

当存在其他“子域名”时重写 subdomain.domain.com

我的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 虚拟主机

相关内容