我有通过通配符与Apacheconfiguration的子域:
<VirtualHost xxx.xxx.xxx.xxx:80> ServerName www.example.com ServerAlias *.example.com ...
这是完美的,除了它也使subsubdomains。 例如:www.test.server.com
我如何确保只有subdomains有效, subdomains不是?
AFAIK, ServerAlias只支持通配符,而不是正则expression式。 你应该用mod_rewrite来做,就像这样:
<VirtualHost xxx.xxx.xxx.xxx:80> ServerName www.example.com ServerAlias *.example.com RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] RewriteCond %{HTTP_HOST} ^(?:[^.]+)\.example\.com [NC] RewriteRule ^(.*)$ http://example.com$1 [R=301,L,QSA] </Virtualhost>