Nginx

nginx - 301 重定向外部網站上使用的錯誤 URL

  • July 9, 2021

出於某種原因,一些外部網站有指向我的網站 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=54597https://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;
}

有關詳細資訊,請參閱此文件

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