1

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

site1.example.com

site2.example.com

site3.example.com

site1.example.net

site2.example.net

因此,在 http.conf 中,我写了:

Alias /robots.txt D:/wampp/static-files/override-robots.txt

以上满足了 example.com 和 example.net 上所有子域的要求,并且默认情况下,创建的每个新子域都将具有此 robots.txt,并且不必为每个子域放置单独的 robots.txt,但问题是有些主域也在这台服务器上,robots.txt 也从上面运行。例如:

www.primarydomain1.com

www.primardomain2.com

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

谢谢

4

1 回答 1

3

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

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

Alias /robots.txt D:/wampp/static-files/override-robots.txt

所以这将针对每个域和子域运行,但可以为每个域/子域的 vhosts 容器内的 vhosts 文件(即 httpd-vhosts.conf)中定义的特定域/子域覆盖它。因此,例如,如果我需要为 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>

所以这样如果有人点击 www.primarydomain1.com/robots.txt apache 将从

D:/WebSites-Data/primarydomain1.com/this-robots.txt

对于其他域/子域,它继续提供服务:

Alias /robots.txt D:/wampp/static-files/override-robots.txt

这也导致我们可以覆盖 httpd.conf 特定域的一些设置,如果我们在 vhosts 容器中定义它。

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

谢谢

于 2013-04-25T07:35:43.767 回答