Массовая склейка 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а, безо всяких модулей :)

Leave a comment

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

OpenID accepted here Learn more about OpenID
Powered by Movable Type 4.2-en