一,前言php
一.1)如下代码是在TP3.0版本以后,URL的默认模式=》PATHINFO的前提下进行的。(通俗点,URL中index.php必须存在且正确)html
代码和讲解以下:服务器
一、空模块解决:http://localhost:8095/index.php/Home/index/index 输入http://localhost:8095/index.php/Home23/index/index 会报错,解决框架
-》》》 1)在公共配置文件添加:post
'MODULE_ALLOW_LIST' => array('Home','Admin'),
'DEFAULT_MODULE' => 'Home',网站
2)空模块要结合下面的2和3,一块儿,因此要看完哦。搜索引擎
上面的'DEFAULT_MODULE' 很重要, 由于当你模块名写错的时候,tp的基类已经把错的模块名当成了控制器名,就会变成Home/Home23,也时候就是走的空控制器了url
二、空控制器解决:spa
1)在Admin和Home下面的Controller文件夹下分别新增EmptyController.class.php文件,里面写一个_empty()方法。 这两个控制器都要继承Controller.class.php.设计
代码:
namespace Home\Controller;
use Think\Controller;
/**
* 空模块,主要用于显示404页面,请不要删除
*/
class EmptyController extends Controller{
public function _empty(){
$src = '/Static/404/404.jpg';
echo "<img src=".$src.">";
}
}
三、空操做解决:
在Home和Admin模块下的普通控制器的父级控制器里面写一个_empty()方法,目的就是每一个控制器都继承了该_empty()方法,只要是空操做就跳转到_empty()方法里面。
代码以下:
namespace Home\Controller;
use Think\Controller;
/**
* 父类控制器空操做,主要用于子类继承
*/
class HomeController extends Controller{
public function _empty(){
$src = '/Static/404/404.jpg';
echo "<img src=".$src.">";
}
}
至此,在URL模式为PATHINFO模式下=》全部TP框架空操做都被咱们自定义的404.jpg页面替换。
2、通用状况
通常网站报404缘由都是找不到资源,是服务器(以Apache为例)报错,Apache自定义了404输出,咱们的目的是使用自定义的404.html去替换Apache的输出,
那么就有了下面的代码和过程:
针对Apache服务器:制做一个404页面,页面本身设计便可,命名为notfound.php,上传到网站根目录。打开.htaccess文件,添加代码:ErrorDocument 404 /notfound.php,而后将.htaccess文件上传到网站根目录。若是.htaccess存在ErrorDocument 404 /index.php,必定要将其删除。这种将404错误转向到网站主页的做法存在极大的风险,严重时会致使主页在搜索引擎中消失。END
示例:
1
2
3
4
5
6
7
8
9
|
<IfModule mod_rewrite.c>
RewriteEngine
on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
ErrorDocument 404 /notfound.php
</IfModule>
|