【发布时间】:2017-12-08 19:05:47
【问题描述】:
我有这个 php 脚本 (test.php),它检查页面是否存在于 mysql 中,它应该返回 404 状态标头,但它返回 200 OK 状态。这会导致控制台出现软 404 错误。
我试图修复它,但它根本不起作用。这是我的.htaccess。几个月前我将我的网站迁移到 SSL,我将所有流量从端口 80 重定向到 https。
RewriteEngine On
ErrorDocument 404 /404.shtml
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
RewriteEngine on
RewriteRule ^([0-9]+)-([0-9]+)-([0-9]+)/pressrelease([0-9]+)\.htm$ test.php?pressid=$4 [L]
这是我的 test.php
<?php
include_once('dbc.php');
$pid = strip_tags(mysql_real_escape_string($_GET['pressid']));
$rs_dirs = mysql_query("select id,name from categories order by name") or die(mysql_error());
$rs_press = mysql_query("select *
from press
where id = '$pid'
and approved='1'
") or die(mysql_error());;
$total = mysql_num_rows($rs_press);
if (mysql_num_rows($rs_press) == 0) {
header("HTTP/1.1 404 Not Found");
include '404.shtml';
die();
}
这里有什么问题,我该如何解决?
【问题讨论】:
-
Please, don't use
mysql_*functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解 prepared statements,并使用 PDO 或 MySQLi - this article 将帮助您决定哪个。
标签: php .htaccess http-status-code-404