我在Apache上为通配符ssl设置了一个域,以便我可以即时创build任何types的子域。
<VirtualHost *:443> DocumentRoot "/var/www/html" ServerName www.domain.com ServerAlias domain.com *.domain.com .... </VirtualHost>
这很好,因为我经常添加子域,我不需要任何其他特殊处理。
当然问题是,现在任何人都可以使用任何随机的子域去默认页面。 即random.domain.com
我的select是什么限制只有当前设置的子域访问? 在htaccess的规则是可行的吗? 就好像它不是这些当前子域中的一个:
RewriteCond %{HTTP_HOST} !^sub\.domain\.com [NC] RewriteCond %{HTTP_HOST} !^sub2\.domain\.com [NC]
为什么不使用已经编写的代码,然后添加一行将其他子域的所有请求重写为不存在的目录(或者将它们redirect到说明他们尝试访问的网站不存在的页面)?
RewriteCond %{HTTP_HOST} !^sub\.domain\.com [NC] RewriteCond %{HTTP_HOST} !^sub2\.domain\.com [NC] RewriteRule (.*) http://dev.domain.com/$1 [R=301,L]
然后,你可以设置一个子域名dev.domain.com,并让它返回一个页面,说明所请求的子域名不存在,或者它不可用,或者你想要发送回请求者的其他文本。
http://coolestguidesontheplanet.com/redirecting-a-web-folder-directory-to-another-in-htaccess/
我build议你使用:
<VirtualHost *:443> DocumentRoot "/var/www/html" ServerName www.domain.com ServerAlias domain.com ServerAlias sub.domain.com ServerAlias sub2.domain.com .... </VirtualHost> <VirtualHost *:443> DocumentRoot "/" ServerName www.domain.com ServerAlias *.domain.com <Directory "/"> Deny from all </Directory> </VirtualHost>