如何将404页面与php页面加载脚本连接起来

Posted

技术标签:

【中文标题】如何将404页面与php页面加载脚本连接起来【英文标题】:How to connect 404 page with php page loading script 【发布时间】:2013-03-24 16:30:12 【问题描述】:

我的 Hompeage 正在使用此脚本加载网站:

<?php
            if(!isset($_GET['id'])) $id = 'home';
            else $id = $_GET['id'];
            include($id.'.php');
        ?>   

你们中有人知道如何将 404 错误页面与之连接吗? 意思是,如果 Php 找不到页面,它会将用户发送到 404 页面。

感谢您的帮助!

【问题讨论】:

你用的是什么服务器? apache 使用 .htaccess 很容易做到http://www.htaccessbasics.com/404-custom-error-page/ 请非常小心这段代码,因为它看起来很危险。基本上,您允许用户完全控制您的文件。考虑用户能够将这样的内容作为“id”传递的情况:'../../../some-file'。您应该真正检查是否允许用户访问该文件,并最好从传递的参数中去除路径信息 我查过了,你真的只能得到php文件,不能访问其他文件夹。 【参考方案1】:

如果由于文件不存在而要重定向用户,则应使用服务器的指令,在 Apache 中它位于 .htaccess 文件中。

如果你想重定向用户因为不存在的 id 所以它想要不存在的文件你可以重定向他:

if($_GET['id']) ... is not existent ) // type your criteria here
  header('Location: your_404_page.php');
  die();

【讨论】:

【参考方案2】:

可能是这样的吗?

<?php

if( !isset( $_GET['id'] ) )

    $id = 'home';

else

    $id = $_GET['id'];


if ( is_file( $id . '.php' ) )

    include( $id . '.php' );

else

    include( '404.php' );


?> 

【讨论】:

以上是关于如何将404页面与php页面加载脚本连接起来的主要内容,如果未能解决你的问题,请参考以下文章

wordpress更改过页面固定连接以后为啥新建页面会出现404错误?

PHP页面加载/刷新到确切位置

PHP如何在页面加载之前将查询字符串附加到URL

PHP会话系统脚本重新加载页面没有消息[重复]

ThinkPHP5.1设置404页面

WEB服务器访问HTML文件404页面