nginx自定义404页面并返回正确的状态码

无意中发现自己论坛的自定义404页面返回的是200,

 

nginx自定义404页面

百度了下,据说这样对seo不利.

然后搜到了解决方法:

  1. 这样的情况设置一般是这样的(网上的相关文章也是这样)
    http{
    .....
    fastcgi_intercept_errors on;
    .....
    }
    #----------------------------------------
    server{
    error_page 404 = /8c6f66dcfc8a3282/index.html; #只是转跳而已
    }
  2. 正确的设置方法应该是这样(去掉等号)
    http{
    .....
    fastcgi_intercept_errors on;
    .....
    }
    #----------------------------------------
    server{
    error_page 404 /8c6f66dcfc8a3282/index.html;
    }
  3. 平滑启动Nginx即可解决该问题
    /usr/local/ws/nginx/sbin/nginx -s reload

 

去掉等号,重启nginx,再次查询,返回了正确的状态码:

nginx自定义404页面

 

另外一开始的404页面在子目录会显示不正常,比如www.tecbbs.com/a/a.aa,虽然返回404页面了,但是样式没了,看来样式路径有问题,改下代码,加上base href:

 
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>404错误</title>
<base href="http://www.tecbbs.com/" /><link href="404/style.css" rel="stylesheet" />
</head>
<body>
<div class="error_wrap">
<h1>此路不通 -_- !</h1>
<p>抱歉,您访问的页面地址有误,或者该页面不存在。</p>
<p>请检查输入的网址是否正确。</p>
<p>您可以:<a href="http://www.tecbbs.com/">返回首页</a></p>
</div>
</body>
</html>

参考百度经验:http://jingyan.baidu.com/article/b2c186c88ca630c46ff6ff71.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注