[英]Redirect URI on NGINX
我的網站上有一個頁面(僅登錄用戶可以訪問),如下所示:
https://www.example.com/forum/new
但是,有時當用戶單擊或刷新時,他們會得到如下頁面:
https://www.example.com/forum%252fnew
現在 %25 解碼為 % 符號,而 %2f 解碼為“/”,因此 URI 似乎被雙重編碼。
我不確定這種編碼是如何發生的,但我認為一種解決方法是讓 Nginx 重定向回正確的 URL,如下所示:
location ~ /forum%252Fnew {
return 301 https://www.example.com/forum/new;
}
我試過用 \\ 轉義該位置的 %,但似乎都不起作用。
我錯過了什么?
在被location
和rewrite
指令處理之前,URI 已經被解碼和規范化,所以%25
看起來像一個%
。
您問題中的示例顯示了正則表達式location
語句。 ~
操作符用於依賴於大小寫的匹配,而~*
操作符用於獨立於大小寫的匹配。
要使問題中的示例起作用,您需要將其更改為:
location ~* /forum%2Fnew
或者:
location ~ /forum%2fnew
有關詳細信息,請參閱此文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.