下面是我的.htaccess
文件。我有一个default_rewrite.php
文件,我从我创建的数据库中获取我的内容。
RewriteEngine on
RewriteRule ^/?([a-z0-9-_]*)$ default-rewrite.php?page=$1 [L]
当您转到已知的断开链接时,例如http://www.example.com/test/fgdhfuis
它会转到我的默认重写页面,但不会转到我存储在数据库中的页面。例如
http://www.example.com/test/home
我已经尝试过ErrorDocument 404 /404.php
但这不适合我。
任何建议将不胜感激。
在 PHP 编辑下方:
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$colname_Page = "home";
if (isset($_GET['page'])) {
$colname_Page = $_GET['page'];
if($colname_Page == "")
$colname_Page = "home";
}
mysql_select_db($database_VRMOnline, $VRMOnline);
$query_Page = sprintf("SELECT * FROM Page WHERE PageName = %s", GetSQLValueString($colname_Page, "text"));
$Page = mysql_query($query_Page, $VRMOnline) or die(mysql_error());
$row_Page = mysql_fetch_assoc($Page);
$totalRows_Page = mysql_num_rows($Page);
mysql_select_db($database_VRMOnline, $VRMOnline);
$query_MetaData = "SELECT * FROM MetaData WHERE MetaDataID = 1";
$MetaData = mysql_query($query_MetaData, $VRMOnline) or die(mysql_error());
$row_MetaData = mysql_fetch_assoc($MetaData);
$totalRows_MetaData = mysql_num_rows($MetaData);
?>
我试过了
$colname_Page = "home";
if (isset($_GET['page'])) {
$colname_Page = $_GET['page'];
if($colname_Page == "")
$colname_Page = "home";
if ($totalRows_Page == 0)
{
$colname_Page = "404-error";
}
但这会使每个页面都进入 404 错误
查看代码后,您可以添加:
if ($totalRows_Page == 0)
{
// 404 Page Logic
}
在第一次查询之后,将colname_Page设置为等于 404 页,您制作并放入数据库。或者您可以使用标头在 PHP 中发送 404 错误("HTTP/1.0 404 未找到");然后,Apache 应该使用您在 .htaccess 中指定的 ErroDocument 404 页面。