2017-12-08 8 views
-2

このPHPスクリプト(test.php)はmysqlにページが存在するかどうかをチェックし、404ステータスヘッダを返しますが200 OKステータスを返します。これにより、コンソールでソフト404エラーが発生します。PHPはSSL経由で404エラーの代わりに200 OKステータスヘッダを返す

私は修正しようとしましたが、単に機能しません。ここは私の.htaccessです。私は数ヶ月前にSSLに、私のサイトを移行したと私はポートからhttpsにすべてのトラフィックをリダイレクトしています80

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(); 
} 

です私が直します?

+1

[**新しいコード**でmysql_ *関数を使用しないでください(https://stackoverflow.com/q/12859942)。彼らはもはや維持されている[正式に廃止されました](https://wiki.php.net/rfc/mysql_deprecation)。 (http://uk.php.net/manual/en/function.mysql-connect.php)[** **赤いボックス]を参照してください?代わりに[* prepared statements *](http://en.wikipedia.org/wiki/Prepared_statement)について学び、[PDO](http://php.net/pdo)または[MySQLi](http:// php.net/mysqli) - [この記事](http://php.net/manual/en/mysqlinfo.api.choosing.php)は、どちらを決定するのに役立ちます。 – Machavity

答えて

0

使用してコードでこのコード:

if (mysql_num_rows($rs_press) == 0) { 
    http_response_code(404); 
    //and another staff here 
} 
+0

動作しません。空白のページが表示されます。 – pbu

+0

あなたはあなたのshtmlやエコーを何か入れましたか?ブラウザーでネットワークを見てください。それは404が見つかりません表示する必要があります –

+0

私はコードをチェックし、私は反響していないが、私は問題がhtaccessのリダイレクトやヘッダーがどこかで流出している必要がありますと思う。 – pbu

2

あなたはheader機能の使用方法を参照してください404

に実際のステータスコードを設定されていません。

http://php.net/manual/en/function.header.php

void header (string $string [, bool $replace = true [, int $http_response_code ]]) 

コードは次のとおりです。

header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404); 

代替機能もあります:

https://secure.php.net/manual/en/function.http-response-code.php

http_response_code(404); 

私が代わりに上記の機能を使用することを好みます。あなたの意図とは何かをもっと冗長にしているからです。

+0

申し訳ありませんが、動作していません。空白のページが表示されます。 – pbu

関連する問題