首页 电脑 电脑学堂 查看内容

PHP如何使404页面重定向

2011-2-12 11:34 737 0

摘要:   最近在改一些东西,包括Discuz论坛,在处理Discuz的修改时特别是重新写了一个404的页面,让用户访问不存在的页面时去访问这个404页面。但是遇到了一个很奇怪的问题,即无法重定向到这个页面。...
关键词: 404 定向 页面 代码 文件 处理 如果 地址 结果 HTTP

  最近在改一些东西,包括Discuz论坛,在处理Discuz的修改时特别是重新写了一个404的页面,让用户访问不存在的页面时去访问这个404页面。但是遇到了一个很奇怪的问题,即无法重定向到这个页面。  最初操作:  1、把apache中的配置文件里 加入代码:ErrorDocument 404 /404.php  2、在404页面的代码里加上<?php header(”HTTP/1.0 404 Not Found”  ?> 。这个方法是向客户端发送一个自然的HTTP头。这个方法要在没有向客户端发送任何信息之前使用,因此加在404.php的文件头最好。  结果:可以使不存在的地址 如  http://bbs.chinabyte.com/thread-399456sssss-1-1.html 重定向到404页面,但是如果是 http://bbs.chinabyte.com/thread-399456123344-1-1.html 这样的地址,则无法重定向。  找原因:  经过对配置文件和DZ论坛代码的查看,发现原因:rewrite规则问题,即我做伪静态的处理,导致第二种地址规则有效,于是已经pass过了服务器层,apache的404定义不再起作用,所以在读取数据的php文件会被执行。针对这种情况应该做处理。  处理:  1、找到被执行的文件:如viewthread.php;  2、在查询数据后,加上对数据的判断,如果为空,则填写重定向代码;  3、代码:  if(如果没有任何结果)  {  //以前是仅仅显示“该帖子已经不存在”的提示,现在是:  require(’/404.php’);  @header(’HTTP/1.1 404 Not Found’);  @header(’Status: 404 Not Found’);  exit;  }  结果:以上问题解决,可以以404的状态重定向到我自定义的404页面。
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部