a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 85|回复: 0

[综合辅导] Linux认证辅导:PHP如何使404页面重定向

[复制链接]
发表于 2012-8-4 12:07:07 | 显示全部楼层 |阅读模式
Linux认证辅导:PHP如何使404页面重定向
; m1 i$ A4 t' V2 F) k  B" TPHP如何使404页面重定向. }8 O( ~1 d! z% `, R, \; Y( B
最近在改一些东西,包括Discuz论坛,在处理Discuz的修改时特别是重新写了一个404的页面,让用户访问不存在的页面时去访问这个404页面。但是遇到了一个很奇怪的问题,即无法重定向到这个页面。
( P7 T- D  N# H( X+ u; u1 G  M1 Y最初操作:# A, o. E, }, G- v8 E* u
1、把apache中的配置文件里 加入代码:ErrorDocument 404 /404.php9 E2 C& {( z# B: e* }5 w
2、在404页面的代码里加上《?php header(”HTTP/1.0 404 Not Found” ?》 。这个方法是向客户端发送一个自然的HTTP头。这个方法要在没有向客户端发送任何信息之前使用,因此加在404.php的文件头最好。8 w! j- A$ x8 i, q" r* ?2 z+ j( C
结果:可以使不存在的地址 如 http://bbs.chinabyte.com/thread-399456sssss-1-1.html 重定向到404页面,但是如果是 http://bbs.chinabyte.com/thread-399456123344-1-1.html 这样的地址,则无法重定向。0 g; ?& L) H/ j2 X$ K9 x
找原因:. I1 X" o4 C8 e/ r$ v3 E
经过对配置文件和DZ论坛代码的查看,发现原因:rewrite规则问题,即我做伪静态的处理,导致第二种地址规则有效,于是已经pass过了服务器层,apache的404定义不再起作用,所以在读取数据的php文件会被执行。针对这种情况应该做处理。6 w$ Y$ ]0 j6 g* l) m4 u
处理:/ ~+ H+ @! x' i' a8 U( k, l
1、找到被执行的文件:如viewthread.php;
  |6 t" h  L8 q2 Z% H( C  i$ E% X2、在查询数据后,加上对数据的判断,如果为空,则填写重定向代码;8 m0 t6 K( x6 i/ V* X/ t
3、代码:# n2 S1 s/ M& b! ~
if(如果没有任何结果)
5 u! q" }* J; a) o6 y{
' s3 u" a$ z! I//以前是仅仅显示“该帖子已经不存在”的提示,现在是:
# k' E; U0 W8 U; C1 d' ]require(’/404.php’);
6 R1 B1 n1 r  m/ E6 x@header(’HTTP/1.1 404 Not Found’);  q: Z8 A# V; s! s- i- A
@header(’Status: 404 Not Found’);
. M$ \- `3 n" k1 ]* u& t# Eexit;
0 W% n6 S/ L1 ]" E7 \' v}3 ~, F/ e( {4 I# q
结果:以上问题解决,可以以404的状态重定向到我自定义的404页面。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-4 20:41 , Processed in 0.339510 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表