使用 nginx 和 uwsgi 进行额外的 301 重定向

使用 nginx 和 uwsgi 进行额外的 301 重定向

我有以下 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在重写中添加标志没有帮助(因为它不应该)

答案1

指令“break”将停止重写模块的工作。如果你在位置内使用 break,你的请求将在其中进行,因此:

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

答案2

尝试将last关键字附加到重写规则中,如下所示:

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

相关内容