Лечим неработающий Global Redirect при nginx+php_fast_cgi

Аватар пользователя batbug batbug 13 июля 2008 в 19:50

Все мы знаем про замечательный модуль Global Redirect. Также многие из нас юзают nginx в связке с php-fast-cgi. Я вот тоже пользуюсь всеми этими инструментами. Однако недавно обнаружил что Global Redirect у меня в принципе не работает, т.е. не редиректит с ссылок вида http://liveangarsk.ru/node/6845 на нужную, которая с алиасом. Стал разбираться, оказалось, что это надо nginx немного поправить.

В конфиге сервера у вас есть часть, отвечающая за rewrite при включенных clean urls, у меня она была такой

        location / {
            if (!-e $request_filename) {
                rewrite  ^(.*)$  /index.php?q=$1  last;
                break;
            }
        }

И я уверен, что у многих это правило записано подобным образом. Я не спец по nginx, но это правило я где-то в инете взял. Так вот при такой записи Global Redirect не работал! Оказалось, что нужно написать немного по-другому, вот так:

        location / {
            if (!-e $request_filename) {
                rewrite  ^/(.*)$  /index.php?q=$1  last;
                break;
            }
        }

Т.е. добавить один слэш. Теперь Global Redirect работает как надо!

Этот фикс я взял вот здесь http://drupal.org/node/117756#comment-508344
Там обсуждали эту проблему, но ввиду ее малораспространенности, issue было закрыто без четкого вердикта.

Надеюсь, фикс вам пригодится.

Комментарии