是否可以根据主机名模式配置全局别名?

是否可以根据主机名模式配置全局别名?

考虑到托管多个虚拟主机的 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: /

相关内容