Nginx

為什麼用 301 程式碼重寫(nginx)重定向?

  • January 7, 2016

我有這個配置:

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/

引用自:https://serverfault.com/questions/746972