Nginx 301 重定向单个 URL

Nginx 301 重定向单个 URL

我正在尝试重定向特定 URL,例如:

http://www.domain.com/cadena-de-metas

我通过 /sites-available/ 中的配置文件执行此操作

    if ( $request_filename ~ cadena-de-metas/ ) {
            rewrite ^ https://some-other-url.com? permanent;
    }

这可行,但遗憾的是它也会重定向此 URL:

http://www.domain.com/uploads/descarga-cadena-de-metas.jpg

我该如何预防?

答案1

避免使用 if 语句,它们对性能不利。尝试以下方法:~* 表示不区分大小写的正则表达式匹配,而正则表达式可以是文字。如果它不起作用,请告诉我,它只需要进行一些小调整 - 不确定你是否需要引号

server {
  server_name example.com www.example.com;

  location ~* "^/cadena-de-metas" {
    return 301 https://some-other-url.com;
  }
}

如果您希望它自动调整为 http / https,您的返回结果也可以是这样的

return 301 $scheme://some-other-url.com;

如果你想重定向到同一服务器上的另一个位置,那么可以这样做

return 301 $scheme://$host/subdirectory;

注意::使用 302 重定向进行所有测试,因为它们未被缓存,当您对设置方式满意时,请更改为 301 重定向。

您可以以不同的方式执行从非 www 到域的 www 的通用重定向,但您还没有询问,所以我不会发布该内容。

除了重定向之外,您还可以执行 proxy_pass,它将从另一个位置获取内容并将其显示在该 URL 上。

相关内容