Apache“Alias”排除某些域名

时间:2012-11-14 10:47:31

标签: apache alias subdomain

我在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,但问题是某些主域也在这个服务器上,还有机器人。 txt也可以从上面运行。例如:

www.primarydomain1.com

www.primardomain2.com

现在,我想要的是example.com&的所有子域名。 example.net将自动从上面运行robots.txt,排除所有主域名。可能是Apache别名并不是最好的方法,因此任何有关它的帮助或提示都会非常有用。

由于

1 个答案:

答案 0 :(得分: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会从

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

以及其他域/子域保持服务:

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

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

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

由于