Массовая склейка www.domain -> domain и наоборот

| 3 Comments

Маленький 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

3 Comments

А вы не замечали, что nginx по дефолту отдает не пустой robots.txt -
типа

UserAgent: *
Disalow:

хотя в папке robots.txt файла нет.

PS: за склейку спасибо - будем пробовать.

Отдается robots.txt для яндекса, который понимает и активно использует нестандартную директиву Host, означающую главное зеркало.

Что-то типа:
User-Agent: Yandex
Disallow: /nonexistent
Host: domain.ru

Собственно, в основном для этого модуль и делался, т.к. просто 301-редирект делается средствами самого nginxа, безо всяких модулей :)

About this Entry

This page contains a single entry by jackal published on September 15, 2008 11:12 AM.

Экспайр сессий и кук в каталисте was the previous entry in this blog.

Сломали DBD::mysql is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Pages

Powered by Movable Type 4.2-en