htaccess:仅限于某些子域

htaccess:仅限于某些子域

我在 Apache 上为一个域设置了通配符 SSL,以便我可以动态创建任何类型的子域。

<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName www.domain.com
ServerAlias domain.com *.domain.com
....
</VirtualHost>

这非常有效,因为我经常添加子域,而且不需要任何其他特殊处理。

当然,问题是现在任何人都可以访问带有任意随机子域的默认页面。即random.domain.com

我在这里有什么选择可以限制仅对当前设置的子域进行访问? htaccess 中的规则可行吗?如果它不是这些当前子域之一,则类似:

RewriteCond %{HTTP_HOST} !^sub\.domain\.com [NC]
RewriteCond %{HTTP_HOST} !^sub2\.domain\.com [NC]

答案1

为什么不使用您已经编写的代码,然后添加一行,将对其他子域的所有请求重写到不存在的目录(或将它们重定向到指出他们尝试访问的网站不存在的页面)?

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/

答案2

我建议你使用:

<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>

相关内容