您的位置:首页 > 运维架构 > Nginx

Yii自定义错误页面(403,404)和NGINX 配置404错误页面转向

2015-11-25 18:35 931 查看
转载:http://www.xiaohigh.com/?p=915





这张图相信用过Yii的朋友们都知道,这是Yii默认的错误页面,403 404错误也会在这里提示,但是很多情况下 我们都需要自定义一下比如说下面这个,小high最近在用Yii做的一个小东西





这样是不是感觉好了很多呢~下面开始讲一下具体的做法。

其实只需要修改一下配置文件,然后在修改一下模板就好了

1.main.php  主配置文件

'errorHandler'=>array(
// use 'site/error' action to display errors
'errorAction'=>'admin/common/error',
),


这里的errorAction是处理错误的控制器,我这里是admin模块的common控制器下的error方法

2.CommonController.php     控制器文件

<?php

/**
* 通用控制器
*/
class CommonController extends Controller
{

public function actionError()
{
if($error=Yii::app()->errorHandler->error)
{
if(Yii::app()->request->isAjaxRequest)
echo$error['message'];
else
$this->render('error',$error);
}
}

}
3 error.php   模板文件  render函数定义的error模板文件

<div id="mws-error-page">
<h1>Error <span><?php echo $code; ?></span></h1>
<h5><?php echo CHtml::encode($message); ?></h5>

</div>
其中$code 是错误代码,而$message是错误的信息,这里你自定模板,然后把错误代码和错误信息替换上就好了,是不是很easy啊~~~


NGINX 配置404错误页面转向

什么是404页面

如果碰巧网站出了问题,或者用户试图访问一个并不存在的页面时,此时服务器会返回代码为404的错误信息,此时对应页面就是404页面。404页面的默认内容和具体的服务器有关。如果后台用的是NGINX服务器,那么404页面的内容则为:404 Not Found 

为什么要自定义404页面

在访问时遇到上面这样的404错误页面,我想99%(未经调查,估计数据)的用户会把页面关掉,用户就这样悄悄的流失了。如果此时能有一个漂亮的页面能够引导用户去他想去的地方必然可以留住用户。因此,每一个网站都应该自定义自己的404页面。

NGINX下如何自定义404页面

IIS和APACHE下自定义404页面的经验介绍文章已经非常多了,NGINX的目前还比较少,为了解决自家的问题特地对此作了深入的研究。研究结果表明,NGINX下配置自定义的404页面是可行的,而且很简单,只需如下几步:

1.创建自己的404.html页面 

2.更改nginx.conf在http定义区域加入: fastcgi_intercept_errors on; 

3.更改nginx.conf(或单独网站配置文件,例如在nginx -> sites-enabled下的站点配置文件 )

中在server 区域加入: error_page 404  /404.html  或者 error_page 404 =http://www.xxx.com/404.html

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

#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错误)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: