Nginx设置404页面的正确方法详解

 平度论坛的404错误页面设计案例平度论坛的404错误页面设计案例

 

404页面的目的是:告诉浏览者其所请求的页面不存在或链接错误,同时引导用户使用网站其他页面而不是关闭窗口离开。
很多开源系统包括CMS系统、Blog系统等不提供404页面或提供的404页面并未达到SEO的要求,这让网站的权威性大打折扣。
404页面该达到怎么样的效果才符合SEO要求?
搜索引擎通过HTTP状态码来识别网页的状态。当搜索引擎获得了一个错误链接时,网站应该返回404状态码,告诉搜索引擎放弃对该链接的索引。而如果返回200或302状态码,搜索引擎就会为该链接建立索引,这导致大量不同的链接指向了相同的网页内容。结果是,搜索引擎对该网站的信任度大幅降低。——很多网站存在这个问题:404页面返回的是200或302状态码而不是404状态码。
正确建立404页面的方法是:
1. 创建自己的404.html页面
2.更改nginx.conf在http定义区域加入:

fastcgi_intercept_errors on;

3.更改nginx.conf(或单独网站配置文件,例如在nginx -> sites-enabled下的站点配置文件,但经过小编测试此情况必须将404文件加在单独网站的根目录下才能生效)中在server 区域加入: error_page 404 = /404.html 或者 error_page 404 = http://bbs.pingdu.co/404.html

4.更改后重启nginx,,测试nginx.conf正确性: /opt/nginx/sbin/nginx –t

5.利用站长工或其它工具进行“页面HTTP状态查询”测试:
查询地址:bbs.pingdu.co/121545

返回状态码:404
网页返回HEAD信息如下
Server: nginx/1.5.3
Date: Tue, 01 Apr 2014 18:35:14 GMT
Content-Type: text/html
Content-Length: 5989
Connection: keep-alive
Vary: Accept-Encoding
ETag: “533b02d3-1765”

#502 等错误可以用同样的方法来配置。

error_page 500 502 503 504 = /50x.html;

注意事项:

1.必须要添加:fastcgi_intercept_errors on; 如果这个选项没有设置,即使创建了404.html和配置了error_page也没有效果。
fastcgi_intercept_errors 语法: fastcgi_intercept_errors on|off 默认: fastcgi_intercept_errors off 添加位置: http, server, location 默认情况下,nginx不支持自定义404错误页面,只有这个指令被设置为on,nginx才支持将404错误重定向。
这里需要注意的是,并不是说设置了 fastcgi_intercept_errors on,nginx就会将404错误重定向。
在nginx中404错误重定向生效的前提是设置了fastcgi_intercept_errors on,并且正确的设置了error_page这个选项(包括语法和对应的404页面)

2.不要出于省事或者提高首页权重的目的将首页指定为404错误页面,也不要用其它方法跳转到首页。

3.自定义的404页面必须大于512字节,否则可能会出现IE默认的404页面。例如,假设自定义了404.html,大小只有11个字节(内容为:404错误)。

补充:

1.创建自己的404.html页面,并放于网站根目录
2.更改nginx.conf在http定义区域加入: fastcgi_intercept_errors on;
3.更改nginx.conf 在网站配置中在server 区域加入: error_page 404 = /404.html; 或者 error_page 404 = http://bbs.pingdu.co/404.html;
4.测试nginx.conf正确性: /usr/local/nginx/sbin/nginx –t
5.重启nginx生效: /usr/local/nginx/sbin/nginx -s reload

502 等错误可以用同样的方法来配置。

error_page  500 502 503 504 = /502.html;

不过我在测试中我不加 fastcgi_intercept_errors on;  也能正常使用,也能出现404页面的,大家也试试吧。

特别提醒:
不要将404错误直接转向到网站首页,这将导致首页不被收录;
/Error.html 前面不要带主域名,否则返回的状态码是302或200状态码。

配置文件实例:

……

http
{
include       mime.types;
default_type  application/octet-stream;

charset  utf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfile on;
tcp_nopush     on;

keepalive_timeout 60;

tcp_nodelay on;

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
fastcgi_intercept_errors on;

gzip on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types       text/plain application/x-javascript text/css application/xml;
gzip_vary on;

#limit_zone  crawler  $binary_remote_addr  10m;

#配置信息

server
{
listen       80;
server_name  www.lnmp100.com;
index index.html index.htm index.php;
root  /opt/www/lnmp100.com;
location ~ .*\.(php|php5)?$
{
#fastcgi_pass  unix:/tmp/php-cgi.sock;
fastcgi_pass  127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
error_page  404  /404.html;

#502 等错误可以用同样的方法来配置。

error_page   500 502 503 504  /50x.html;
location  /50x.html {
root   html;
}
log_format  lnmp100  ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” $http_x_forwarded_for’;
access_log  /opt/nginx/logs/lnmp100.log  lnmp100;
}

 

……

 

电视里的错误场景PS:此图片来自网络 名字叫:电视里的错误场景

未经允许不得转载:友浩SEO » Nginx设置404页面的正确方法详解

赞 (0) 打赏

评论 0

评论前必须登录!

登陆 注册

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏