我在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别名并不是最好的方法,因此任何有关它的帮助或提示都会非常有用。
由于
答案 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.txtD:/WebSites-Data/primarydomain1.com/this-robots.txt
以及其他域/子域保持服务:
Alias /robots.txt D:/wampp/static-files/override-robots.txt
这也导致我们可以覆盖httpd.conf某些特定域的设置,如果我们在vhosts容器中定义它。
上述解决方案对我来说很好。如果这个解决方案有任何缺点,请与我分享。
由于