我有以下 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;