考虑到托管多个虚拟主机的 Web 服务器,是否可以根据主机名模式配置全局别名,该别名也可能与先前定义的主机之一匹配?
一些背景信息:我们经常为客户使用临时域名,这样客户就可以在域名尚未正确配置时查看他们的网站。这使得虚拟主机指令如下所示:
<VirtualHost 1.1.1.1:80>
ServerName myclient.com
ServerAlias myclient.staging.mycompany.com
....
</VirtualHost>
我想要实现的目标:
我不希望将暂存域包含在 Google 搜索结果中。为此,我想 在主机名模式匹配时配置一个Alias
指令。最好不要在每个虚拟主机中包含它,而是在更高级别上配置它。Disallow: /
*.staging.mycompany.com
我已尝试过:
我尝试配置自定义VirtualHost
如下:
<VirtualHost 1.1.1.1:80>
ServerName staging.mycompany.com
ServerAlias *.staging.mycompany.com
Alias /robots.txt /usr/local/apache/htdocs/staging-robots.txt
</VirtualHost>
这不起作用,因为其他VirtualHost
指令都已匹配,而这个指令被忽略了。
实现这一目标的最优雅方法是什么?
答案1
VirtualHost
我已经通过在每个文件中包含如下文件解决了我自己的问题:
<VirtualHost 1.1.1.1:80>
....
Include /usr/local/apache/conf/includes/staging-rewrites.conf
</VirtualHost>
并且位于/usr/local/apache/conf/includes/staging-rewrites.conf
::
RewriteCond %{HTTP_HOST} .*\.myredactedstagingdomain.com$
RewriteRule robots.txt /usr/local/apache/htdocs/staging-robots.txt [NC,L]
最后,在我的 robots 文件中:
User-Agent: *
Disallow: /