Nginx
為什麼用 301 程式碼重寫(nginx)重定向?
我有這個配置:
location ~ ^/myway(.*) { rewrite ^/myway(.*)$ /anotherway$1; rewrite_log on; error_log /var/log/nginx/errors notice; } location /anotherway { ... internal; }
url:
site.com/myway/
工作正常(重寫為site.com/anotherway/
)。但是 url:site.com/myway
重定向到site.com/anotherway/
. 為什麼?它應該給出404錯誤嗎?
您可以更改
(.*)
為(.+)
.*
匹配任何字元(換行符除外) 量詞:* 在零次和無限次之間,盡可能多次,根據需要回饋$$ greedy $$
.+
匹配任何字元(換行符除外) 量詞:+ 一次到無限次,盡可能多次,根據需要回饋$$ greedy $$
這意味著:
/myway(.*)
匹配 /myway(…) & /myway/(…)/myway(.+)
僅匹配 /myway/(…)如果指定的正則表達式與請求 URI 匹配,則 URI 將按照替換字元串中的指定進行更改。重寫指令按照它們在配置文件中出現的順序依次執行。可以使用標誌終止對指令的進一步處理。如果替換字元串以“http://”或“https://”開頭,則處理停止並將重定向返回給客戶端。
有關 Nginx 重寫的更多資訊:http: //nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite
順便說一句,您可以在這裡測試正則表達式:https ://regex101.com/