有没有办法根据主机名在 nginx 中交换 robots.txt 文件?我目前有 www.domain.com 和 backup.domain.com 指向同一个 nginx 服务器,但我不希望 Google 索引 backup.domain.com。
答案1
两个选项:
if
基于此的语句将$http_host
重写为后端的两个文本文件之一。- 将 robots.txt 重写为相应响应的动态脚本(robots.php 等)。
答案2
有一个正确的方法地图
map $http_host $examplecom_robotstxt {
hostnames;
default robotstxt/development.txt;
example.com robotstxt/production.txt;
}
server {
...
location = /robots.txt {
rewrite .* /$examplecom_robotstxt break;
}
...
}
请注意,地图定义应该位于服务器定义之外。
答案3
作为参考,这是我使用的语法:
if ($http_host != "www.domain.com") {
rewrite ^/robots.txt /robots-backup.txt last;
}
这是在位置块内