.htaccess 重写规则不重写别名

.htaccess 重写规则不重写别名

我正在尝试为用于域分片的备用子域提供不同的 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 中的 / 一起工作,一旦我删除了 /,它就可以工作了,不确定为什么,但这为我解决了问题。

相关内容