nginx - 301 重定向外部网站上使用的错误 URL

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=54597https://subdomain.example.com/index.php?id=54597一旦它包含冒号,我就无法获得匹配的位置。有没有办法让它工作?

就像是

location ~ "^https://subdomain.example.com/index.php$" {
  return 301 /index.php?$query_string;
}

答案1

Nginx 中的所有 URI 都以前导 s 开头/,并且被规范化以删除连续的//s。

您应该将正则表达式更改为:^/https:/subdomain\.example\.com/index\.php$并将其放置在多于location与以 结尾的 URI 匹配的块.php

或者,使用=运算符精确匹配单个 URI,例如:

location = /https:/subdomain.example.com/index.php {
    return 301 /index.php$is_args$args;
}

这个文件了解详情。

相关内容