3

ユーザーが直接アクセスできないようにするページがいくつかあります。

私は私が思いついたこの機能を持っています:それはうまくいきます:

function prevent_direct_access()
{
    if($_SERVER['REQUEST_URI'] == $_SERVER['PHP_SELF'])
    {
        //include_once('404.php');
        header("Location: 404.php");
    }
}

これは私が望むことを正確に実行します。URLは変更されませんが、コンテンツは変更されます。ただし、これが404であり、インデックスを作成しないことを検索エンジンに通知するために追加する必要があるものがあるかどうか疑問に思っています。ただし、URLを変更したくないことを覚えておいてください。

ありがとう!

4

4 に答える 4

6

リダイレクトせずに、404ステータスコードを送信します。

header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
exit;
于 2009-06-25T15:45:50.543 に答える
0

検索エンジンの場合、HTTPステータス404を返す場合、インデックスを作成するべきではないと私は信じています。ただし、robots.txtでカバーされている場所にいつでもリダイレクトできます

于 2009-06-25T15:43:59.487 に答える
0

検索エンジンがインデックスを作成しないようにするには、 header()コマンドを使用して 404 lke this を送信します。

header("HTTP/1.0 404 Not Found");

または、そのようなファイルをすべて 1 つのフォルダー (たとえば "includes") に入れ、robots.txt ファイルに "Deny /includes/" を追加します。このようにして、同じディレクトリに「.htaccess」ファイルを「Deny From All」という 1 行で追加することもできます。これにより、別のセキュリティ層のために、Apache がアクセスをブロックするように指示されます (apache が適切に構成されている場合)。

于 2009-06-25T15:49:47.590 に答える
0

明確にするために:

  • システム上の他の PHP プログラムで使用できるようにしたい PHP がいくつかあります。
  • 他の PHP プログラムのいずれかを実行する場合を除いて、誰もアクセスしたくない

(つまり、「直接」とは、「このサイトの別のページからのリンクをたどることを除いて」という意味ではありません)

PHP ファイルを webroot の外に置いておくだけです。そうすれば、そもそも URL がありません。

于 2009-06-25T15:59:28.620 に答える