Пожалуйста, помогите мне разобраться в простой проблеме перезаписи nginx для субдомена robots.txt - PullRequest
0 голосов
/ 31 марта 2011

Для моего субдомена я хотел указать другой файл robots.txt.Я надеялся, что следующий код будет работать:

if ($host ~ subdomain) {
    rewrite ^/favicon.ico$ /favicon.ico break;
    rewrite ^/robots.txt$ /robots.subdomain.txt break;
    rewrite ^/([^\/]*)?/?(.*)?$ /index.php?in1=$1&in2=$2&$query_string last;
}

favicon.ico работает нормально, все другие расширения переписываются в index.php просто отлично, но так же и robots.txt.

Iпотратил [впустую] много времени, пытаясь ее решить, что я и сделал, добавив следующую строку после перезаписи robots.txt.

    rewrite ^/robots.subdomain.txt$ /robots.subdomain.txt break;

Может кто-нибудь помочь мне, почему это работает, только когда я добавляю этоКроме того, приветствуются любые улучшения в моем конфиге, если вы видите очевидную неэффективность!Спасибо.

1 Ответ

0 голосов
/ 01 апреля 2011

Это должно быть то, что вы ищете:

location / {
  rewrite ^/robots.txt$ /robots.$host.txt; # rewrites robots.txt

  try_files $uri $uri/ @php; # try_files serves statics and sends everything else
                             # to your front controller (index.php)
                             # files such as favicon.ico get served normally
}

location @php {
 rewrite ^/([^\/]*)?/?(.*)?$ /index.php?in1=$1&in2=$2 last;
}

Единственное предостережение в том, что ваш robots.txt должен быть назван в честь полного хоста, поэтому в приведенном выше примере ваш www.domain.com должен иметь файл robots.www.domain.com.txt в корне документа. Это кажется немного уродливым, поэтому я бы сделал это так:

rewrite ^/robots.txt$ /$host.robots.txt;

и затем вы называете свой файл www.example.com.robots.txt

...