Nginx
nginx - 301 重定向外部網站上使用的錯誤 URL
出於某種原因,一些外部網站有指向我的網站 subdomain.example.com 的連結,看起來像這樣:
<a href="https://subdomain.example.com/https://subdomain.example.com/index.php?id=54597">Link</a>
我無法更正這些連結,因為我無法控制這些連結。因此,我不想顯示 404 錯誤,而是想通過 nginx 重定向
https://subdomain.example.com/https://subdomain.example.com/index.php?id=54597
到https://subdomain.example.com/index.php?id=54597
,但是一旦包含冒號,我就無法獲得匹配的位置。有沒有辦法讓它工作?就像是
location ~ "^https://subdomain.example.com/index.php$" { return 301 /index.php?$query_string; }
Nginx 中的所有 URI 都以前導開頭,
/
並被規範化以刪除連續//
的 s。您應該將正則表達式更改為:
^/https:/subdomain\.example\.com/index\.php$
並將其放在匹配以 . 結尾的 URI的塊上方。location``.php
或者,使用
=
運算符來精確匹配單個 URI,例如:location = /https:/subdomain.example.com/index.php { return 301 /index.php$is_args$args; }
有關詳細資訊,請參閱此文件。