在IIS/ASP.net/Apache服务器中设置404、500等错误页面
当用户连接站点上一个不存在的页面能URL重定位到自己给出 的页面,也就是自定义404错误页!
1、在IIS/ASP.net下设置404错误页面
首先,修改应用程序根目录的设置,打开 "web.config" 文件编辑,在其中加入如下内容:
1 | <configuration> |
2 | <system.web> |
3 | <customErrors mode="On" defaultRedirect="error.asp"> |
4 | <error statusCode="404″ redirect="notfound.asp" /> |
5 | </customErrors> |
6 | </system.web> |
7 | </configuration> |
此例中"error.asp"为系统默认的404页面,"notfound.asp"为自定义的404页面,使用时请修改相应文件名。然后,在自定义的404页面"notfound.asp"中加入:
1 | <% |
2 | Response.Status = "404 Not Found" |
3 | %> |
这样,便可以保证IIS能够正确地返回"404"状态码。
2、Apache服务器404页面的设置方法
在.htaccess 文件中加入代码:ErrorDocument 404 /Error.html,建立一个简单的html404页面命名 Error.html,把 Error.html放置在网站根目录即可。这用到了apache的mod_rewrite模块和.htaccess文件的正则写法。自己摸索出两种写法
第一种:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /err404.html [L]
解释一下RewriteCound是指定义重写发生的条件,%{ NAME_OF_VARIABLE }服务变量中的REQUEST_FILENAME是匹配完整文件路径或者目录 -f是指文件 -d指目录 !取反,那样上面可以理解为URL不存在的文件名或者目录时,条件为真,就执行重定义规则也就是跳到err404.html
第二种:
ErrorDocument 404 /404.html
注意:
不要将404错误直接转向到网站首页,这将导致首页不被收录;
/404.html 前面不要带主域名(即不要设置成http://www.wendabaike.com/404.html的方式),否则返回的状态码是302或200状态码。
ErrorDocument 还可以定义其他错误如500 401 403等,后面的参数是重定义的URL
说明:
你也可以在网站访问页面出现404、403错误信息时,自动跳转至首页或另一个网站,方法如下:
ErrorDocument 403 /index.phpErrorDocument 404 http://www.fabu114.com 以此类推。。。当然出于用户体验性方面的考虑,不推荐做自动跳转至首页或者其他网站的设置。