php框架

 首页 > php框架 > ThinkPHP > 自定义404页面的响应和设置 - Thinkphp

自定义404页面的响应和设置 - Thinkphp

分享到:
【字体:
导读:
          我用的是PHP的thinkphp框架,当时不知道为什么我没有在网上搜索“thinkphp中404页面显示”等类似这样的关键字,而是输入了类似“wampserver设置404页面显示”这样的关键字,在晚上找到了很多...

自定义404页面的响应和设置

在我们写任何的网站的时候,都会涉及到友好的404页面的显示,今天我就遇到这样的问题,对于一个对这些了解不是很多的我,要独立解决问题.

我用的是PHP的thinkphp框架,当时不知道为什么我没有在网上搜索“thinkphp中404页面显示”等类似这样的关键字,而是输入了类似“wampserver设置404页面显示”这样的关键字,在晚上找到了很多的内容,解决方法都是修改工程目录下的.htaccess文件,对这个文件我了解的不多,甚至说不知道它是干什么的,该文件的功能或许是这样的:该文件可以叫分布式配置文件,主要是配置文件,提供了针对目录改变配置的方法,即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录,作为用户,所能使用的命令受到限制,管理员可以通过Apache的AllowOverride指令来设置,这样的理解我还能接受,这样的理解是从一篇日志上看到的,对其更详细的介绍请点击博文末尾的链接.

对404页面的问题解决的方法就是在.htaccess添加代码:

ErrorDocument 404 /errors/error.html  error.htmnl就是对404处理的页面

运行项目,发现返回404错误的时候,没有显示出error.html文件内容,难道没有执行吗?下面再用一下的语句测试一下:

ErrorDocument 404 “404 file not found”  引号里的内容就是对404处理的显示结果,当我们执行项目的时候发现会显示出“404 file not found”这样的字样,说明我们这几句话是被调用了的,然后陷入了疑惑的状态,难道是自己的其他配置有问题,最后在网上继续寻找问题的答案,问题也没有解决,这样的策略那就不能考虑了(ps:据说是thinkpnp自身的原因,解决方案就是修改/ThinkPHP/Tpl/ThinkException.tpl.php

在html源码头部追加),这个我还没有测试,所以这个方法大家可以尝试一下。

下面说下一种解决方法:

就是在Action中创建一个ErrorAction.class.php模块,在里面写过_Empty()方法,具体代码如下:

  1.     class EmptyAction extends Action { 
  2.      public function _empty(){ 
  3.             header("HTTP/1.0 404 Not Found");//这个是必须添加的,这个就是返回404错误 
  4.             $this->display('Error:error');//error是存放在Error文件夹中的error.html(404页面), 
  5.         } 
  6.     } 
  7. ?> 

有这个后仅仅只能解决所谓的一级域名的错误问题,要是解决二级域名等问题,需要解决的方法就是在CallAction.class.php和JasonAction.class.php以及CallAction等所有能出现在url中的模块里添加如下代码:

  1. public function _empty(){ 
  2.             header("HTTP/1.0 404 Not Found");//这个是必须添加的,这个就是返回404错误 
  3.             $this->display('Error:error');//error是存放在Error文件夹中的error.html(404页面), 

方可实现当输入错误的url时,显示404页面.

分享到:
ThinkPHP项目入口文件声明和注意事项 - T...
ThinkPHP项目入口文件声明和注意事项 在主入口文件内: define('APP_RUNTIME','/temp/');改变生成临时文件夹的路径文件 define('STRIP_RUNTIME','false');生成的临时文件保留空白和换行,便于排错 define('NO_CACHE_RUNTIME','tru...
ThinkPHP实例化模型 - Thinkphp
ThinkPHP实例化模型 一:实例化一个表 1、创建一个基础模型,实例化一个系统自带的数据库类 &User= new Modol('user')等价于$User =M('user'); 2、thinkphp会自动的去帮我们找到这个数据库当中的表,并且把表当中人相应字段全部拿过来,就可以直接操作这个表并可以用表中...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……