我正在尝试创建一个错误页面,但我想在某个字典上指定它。 问题是它是一个php文件。 例如,如果我的页面只有一个名为page1的标题而且没有其他内容,我想为每个不存在的页面2显示错误。 http://example.com/showpage.php?title=page1 http://example.com/showpage.php?title=page2 我不想使用htaccess,因为在同一个字典中还有其他文件我想显示另一条错误消息。
答案 0 :(得分:1)
当页面名称相同且只有参数不同时,我会避免发送非200标题。
但是,你当然可以这样做:
if(不存在){ 一些错误信息 } else { 渲染它 }
如果您想发送404错误,我会使用重写规则来获得如下网址:
然后您可以发送404状态,使浏览器混淆的可能性更低。
重写,假设你正在使用Apache,就像:
RewriteEngine On RewriteRule ^ page / page([0-9])/?$ /showpage.php?title=page$1
注意:未经测试的重写规则,但如果您有兴趣走这条路,那么在阅读Apache文档之间,您应该能够获得它。
答案 1 :(得分:1)
您是在查询数据库还是包含真实文件,例如page1.php?
修改强> 如果您使用的是MySQL,那么您希望对查询使用mysql_num_rows(),如果返回true,则执行所有回显,但如果返回false,则为include_once('error-for-non-existing-title.php' ); (可选)如果未设置$ title变量,则可以抛出404标题。如果您想
,可以在.htaccess中重写404文档我认为对于在线阅读器,你应该有多个变量($ _GET ['title'])和$ _GET ['page']。使用$ title来区分不同的标题和$ page以浏览它的页面。
我猜你还不知道如何使用PDO,所以......
$link = mysql_connect("localhost", "username", "password");
mysql_select_db("database_name", $link);
if(isset($_GET['title'])) {
$title = $_GET['title'];
$query = mysql_query("SELECT * FROM pages WHERE title='$title'", $link);
$num_rows = mysql_num_rows($query);
//if there is a page
if($num_rows!=0) {
//fetch the data as associative array
$result = mysql_fetch_assoc($query);
echo $result['title'],'<br />';
}
else include_once('error.php');
}
//optionally if you want to, you could throw a 404 header if there is no $title
//variable set. Just remove the double slashes from the next line of code.
//else header("HTTP/1.1 404 Not Found");