Маленький perl-модуль к nginx-у, который "склеивает" www.domain -> domain и наоборот (т.е. на каждый урл выдает соотв. 301-редирект, плюс robots.txt для яндекса).
Прелесть в том, что не нужно описывать директиву server для каждого домена. Достаточно все домены - неосновные зеркала запихнуть в один server (поштучно или маской/регэкспом) и вообщем-то всё. Если домен с www, значит основным зеркалом считается без www, и наоборот.
ngx_glue.tar.gzА вообще это делается как-то так:
server { server_name все_неосновные_зеркала_поштучно_или_маской; if ($host ~ ^www\.(.+)$) { set $h $1; rewrite ^(.*)$ http://$h$1 permanent; break; } rewrite ^(.*)$ http://www.$host$1 permanent; }
Но тут не будет генериться robots.txt
А вы не замечали, что nginx по дефолту отдает не пустой robots.txt -
типа
UserAgent: *
Disalow:
хотя в папке robots.txt файла нет.
PS: за склейку спасибо - будем пробовать.
Отдается robots.txt для яндекса, который понимает и активно использует нестандартную директиву Host, означающую главное зеркало.
Что-то типа:
User-Agent: Yandex
Disallow: /nonexistent
Host: domain.ru
Собственно, в основном для этого модуль и делался, т.к. просто 301-редирект делается средствами самого nginxа, безо всяких модулей :)