我正在尝试为用于域分片的备用子域提供不同的 robots.txt,以便 Google 不会索引 m1.example.com 和 m2.example.com。
/etc/httpd/sites-enabled/www.example.com
Alias /robots.txt /var/www/html/robots.txt
....
ServerName www.example.com
ServerAlias m1.example.com m2.example.com
....
DocumentRoot /var/www/www.example.com/public
/var/www/www.example.com/public/.htaccess
RewriteEngine on
RewriteCond %{HTTP_HOST} !=www.example.com [NC]
RewriteRule ^/robots\.txt$ /var/www/html/robots-disallow.txt [L]
....
当我点击 m1.example.com/robots.txt 时,它显示 robots.txt 而不是 robots-disallow.txt。
如果我将重写规则添加到 /etc/httpd/sites-enabled/www.example.com 中的虚拟主机,它可以正常工作,但在 .htaccess 中却不行
答案1
我通过删除 .htaccess 中 ^/robots.txt$ 的正斜杠解决了这个问题,现在它看起来像:
RewriteRule ^robots\.txt$ /var/www/html/robots-disallow.txt [L]
在 vhost conf 中,它可以与 .htaccess 中的 / 一起工作,一旦我删除了 /,它就可以工作了,不确定为什么,但这为我解决了问题。