如何将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页面加载脚本连接起来的主要内容,如果未能解决你的问题,请参考以下文章