Apache “阿帕奇”;别名";排除某些域

Apache “阿帕奇”;别名";排除某些域,apache,alias,subdomain,Apache,Alias,Subdomain,我在windows上安装了wampp服务器。在这台服务器上,我有多个子域与一些使用虚拟主机的主域一起运行。要求自动为所有子域实现robots.txt。例如: site1.example.com site2.example.com site3.example.com site1.example.net site2.example.net www.primarydomain1.com www.primardomain2.com 为此,我在http.conf中写了: Alias /rob

我在windows上安装了wampp服务器。在这台服务器上,我有多个子域与一些使用虚拟主机的主域一起运行。要求自动为所有子域实现robots.txt。例如:

site1.example.com

site2.example.com

site3.example.com

site1.example.net

site2.example.net
www.primarydomain1.com

www.primardomain2.com
为此,我在http.conf中写了:

Alias /robots.txt D:/wampp/static-files/override-robots.txt
Alias /robots.txt D:/wampp/static-files/override-robots.txt
以上内容满足了example.com和example.net上所有子域的要求,默认情况下,创建的每个新子域都将具有此robots.txt,并且每个子域不必放置单独的robots.txt,但问题是一些主域也位于此服务器上,并且robots.txt也会从上面运行。例如:

site1.example.com

site2.example.com

site3.example.com

site1.example.net

site2.example.net
www.primarydomain1.com

www.primardomain2.com
现在,我想要的是example.com和example.net的所有子域都将从上面自动运行robots.txt,不包括所有主域。可能Apache Alias不是实现这一点的最佳方法,因此任何有关它的帮助或提示都将非常有用


谢谢

经过一些试运行,我找到了一个解决方案,如果我在这里分享,我想它可能会对某些人有所帮助:

基本上,在httpd.conf文件中,我写了:

Alias /robots.txt D:/wampp/static-files/override-robots.txt
Alias /robots.txt D:/wampp/static-files/override-robots.txt
因此,这将为每个域和子域运行,但可以为vhosts文件(即httpd-vhosts.conf)中定义的特定域/子域重写,该文件位于每个域/子域的vhosts容器内。例如,如果我需要为www.primarydomain1.com提供不同的robots.txt:

<VirtualHost 212.212.212.212>
  DocumentRoot "D:/WebSites-Data/primarydomain1.com"
  ServerName primarydomain1.com
  ServerAlias www.primarydomain1.com
  ErrorLog "logs/primarydomain1.com-error.log"
  CustomLog "logs/primarydomain1.com-access.log" combined
  Alias /robots.txt D:/WebSites-Data/primarydomain1.com/this-robots.txt
</VirtualHost>
对于其他域/子域,它从以下位置继续提供服务:

Alias /robots.txt D:/wampp/static-files/override-robots.txt
这也导致了这样一个事实:如果我们在vhosts容器中定义特定域,我们可以覆盖httpd.conf的一些设置

上述解决方案对我来说很有效。如果这个解决方案有任何缺点,请与我分享


谢谢

三年后对我有用。谢谢