Назад | Перейти на главную страницу

Дополнительный редирект 301 с nginx и uwsgi

У меня есть следующая конфигурация nginx:

server {
    server_name tawp.in;

    location / {
            rewrite ^/r/([^/]*)$ /s/ta/$1;
            rewrite ^/e/(.*)$ /en/ta/$1;

            uwsgi_pass unix:/tmp/uwsgi.sock;

            uwsgi_param UWSGI_CHDIR  /home/yuvipanda/sites/wikishortipy;
            uwsgi_param UWSGI_CALLABLE app;
            uwsgi_param UWSGI_MODULE app;
            uwsgi_param UWSGI_FILE /home/yuvipanda/sites/wikishortipy/app.py;
            uwsgi_param UWSGI_SETENV WIKISHORTIPY_SETTINGS=/home/yuvipanda/sites/wikishortipy/settings.py;
            include uwsgi_params;
    }
}

Я ожидал, что два правила перезаписи просто перезапишут внутри, но они вызывают отправку внешних 301 редиректов. Что я делаю не так?

Вы можете проверить сайт по адресу tawp.in/r/3, чтобы увидеть дополнительный редирект.

редактировать: Добавление last флаг на перезапись не помогает (как не должно)

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

rewrite ^/r/([^/]*)$ /s/ta/$1 break;
rewrite ^/e/(.*)$ /en/ta/$1 break;

Попробуйте добавить last в правила перезаписи, например:

rewrite ^/r/([^/]*)$ /s/ta/$1 last;
rewrite ^/e/(.*)$ /en/ta/$1 last;