В чём ошибка rewrite Nginx?

В общем делаю так:
location / {
        root       "%hostdir%";
        index      index.php index.html index.htm;
        rewrite ^([^.]*[^/])$ $1/ permanent;

        rewrite ^/admin/$ index.php?type=admin;
    }


Открываю: www.site.ru/admin/ Ошибка 404

Делаю так:
location = /admin/ {
        rewrite ^(.*)$ /index.php?type=admin;
    }


Работает!

Добавляю:
location = /admin/ {
        rewrite ^(.*)$ /index.php?type=admin;
        rewrite ^people$ /index.php?type=admin&module=people;
    }

Открываю: www.site.ru/admin/ Работает
Открываю: www.site.ru/admin/people/ Ошибка 404
  • Вопрос задан
  • 220 просмотров
Решения вопроса 1
Все дело в слэше.

Вместо

rewrite ^/admin/$ index.php?type=admin;

нужно

rewrite ^/admin/$ /index.php?type=admin;,

и оно заработает. В вашем примере, который в location, как раз есть слэш.

Что касается второго реврайта (people), то там слэш в конце потерян. Надо сделать так:

rewrite ^people/$ /index.php?type=admin&module=people;

В таком случае www.site.ru/admin/people/ заработает, НО тогда не будет работать без слэша. Можно убрать $, тогда будет работать для любых URL, которые начинаются на www.site.ru/admin/people, т.е. и для www.site.ru/admin/people/ и для www.site.ru/admin/people-f////.

Если нужно для версии со слэшем и без, то можно сделать так:

rewrite ^people/?$ /index.php?type=admin&module=people;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы