出于某种原因,一些外部网站有指向我的网站 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,例如:有关详细信息,请参阅此文档。