【问题标题】:Nginx redirect to 404 page if there is a trailing slash at the end of the URL如果 URL 末尾有斜杠,Nginx 会重定向到 404 页面
【发布时间】:2022-02-10 11:59:11
【问题描述】:

如果 URL 末尾有斜杠,我收到了重定向到 404 页面的请求。

例如:

https://www.example.com/test/

如果用户在末尾输入斜杠,则意味着我们需要将其重定向到 404 页面。以前我通过删除尾部斜杠重定向相同的 URL,现在要求已更改为重定向到 404 页面。

这里是它的 nginx 配置文件。请让我知道我必须在此处进行哪些更改才能实现该场景。

nginx.conf

server {

  listen 80;
  rewrite ^/(.*)/$ /$1 permanent;

  location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    try_files $uri $uri.html $uri/index.html $uri/index =404;
    error_page 404 /404.html;
  }

  error_page   500 502 503 504  /50x.html;

  location = /50x.html {
    root   /usr/share/nginx/html;
  }
}

更新的配置:

此配置后显示默认 Nginx 404 错误页面。此处显示自定义 404 页面需要什么更新?

server {

  listen 80;

  location ~ ^/(.*)/$ { 
    return 404; 
  }

  location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    try_files $uri $uri.html $uri/index.html $uri/index =404;
    error_page 404 404 /404.html;
  }

  error_page   500 502 503 504  /50x.html;

  location = /50x.html {
    root   /usr/share/nginx/html;
  }
}

【问题讨论】:

    标签: nginx redirect nginx-config nginx-location http-redirect


    【解决方案1】:

    删除重写^/(.*)/$ /$1 permanent; 语句并替换为:

    location ~ ^/(.*)/$ { return 404; }
    

    【讨论】:

    • 嗨,我按照你说的做了。但不是重定向我们创建的自定义 404。它重定向到 nginx 404 页面。我已附上截图供您参考
    • 我必须添加error_page 404 /404.html吗?到顶部
    • 是的。 error_page 404 /404.html; 不在范围内。最好将其移动到server 块中。
    • 将它移到第 80 行之后。有效吗?
    • 您可以将它放在服务器块上下文中的任何位置,这对error_page 指令没有影响。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 2021-11-30
    • 2019-10-12
    • 2016-12-22
    • 1970-01-01
    • 2013-03-11
    相关资源
    最近更新 更多