我有以下nginx conf:
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; } }
我期望两个重写规则只是在内部重写,但他们正在导致外部301redirect发送。 我究竟做错了什么?
您可以在tawp.in/r/3查看该网站,查看额外的redirect。
编辑 :添加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;