Назад | Перейти на главную страницу

Динамический robots.txt на основе имени хоста

Есть ли способ заменить файл robots.txt в nginx на основе имени хоста? В настоящее время у меня www.domain.com и backup.domain.com указывают на один и тот же сервер nginx, но я не хочу, чтобы Google индексировал backup.domain.com.

Два варианта:

  1. An if заявление на основе $http_host который перезаписывается в один из двух текстовых файлов на сервере.
  2. Переписать robots.txt в динамический скрипт (robots.php и т. Д.), Который будет реагировать соответствующим образом.

Есть правильный способ с карта

map $http_host $examplecom_robotstxt {
  hostnames;
  default robotstxt/development.txt;
  example.com robotstxt/production.txt;
}

server {
  ...
  location = /robots.txt {
    rewrite .* /$examplecom_robotstxt break;
  }
  ...
}

Обратите внимание, что определение карты должно быть вне определения сервера.

Для справки, это синтаксис, который я использовал:

if ($http_host != "www.domain.com") {
    rewrite ^/robots.txt /robots-backup.txt last;
}

Это было внутри блока локации