2

自分のウェブサイトに見つからなかったウェブページのリンクを取得する方法を考えていました。

次の.htaccessコードを使用すると、存在しないページが要求されると、ユーザーはmy_404.phpにリダイレクトされます。

Options -Indexes

ErrorDocument 404 http://mysite.com/my_404.php

見つからなかったページのリンクを追跡する必要がある場合、どうすればよいですか?

たとえば、A.phpは有効なWebページですが、b.phpは有効ではありません。したがって、A.phpを使用していて、b.php(存在しないページ)を表示しようとすると、.. .htaccessはHTTP_REFERER、A.phpとして表示されるmy_404.phpにリダイレクトします。誰かがB.phpを表示しようとしました」。それ、どうやったら出来るの?

ご協力いただきありがとうございます。

編集

参照してください:ログファイルをチェックインしたくありません。私はページで何かについて尋ねています。ありがとう。

4

4 に答える 4

2

これは、Apache ログ ファイルで既に行われている可能性があります。データを 2 回記録するのではなく、データを解析することができます。

Stackoverflow アーカイブ:

追加の関連コンテンツ:

于 2009-06-29T12:03:26.823 に答える
2

探している変数は、$_SERVER['REQUEST_URI'] と呼ばれます。クライアントがサーバーに対して行った元のリクエストを保持します。

他の「$_SERVER」変数のリストは、こちらで確認できます

編集:

少しグーグルで検索した後、問題はエラーページが http:// 修飾子で指定されていることです。ErrorDocument がローカル ファイルとして指定されるように htaccess を変更します。

ErrorDocument 404 /www/my_404.php 

それを行った後、 $_SERVER['REQUEST_URI'] は正しい値を保持する必要があります。

于 2009-06-29T12:05:22.497 に答える
2

のようなリモートの ErrorDocument URL を使用すると、Apache はその URL へのリダイレクトをクライアントに送信します。そのため、 Matt Bridges が提案したようhttp://mysite.com/my_404.phpに 404 を引き起こす URL を取得できません。$_SERVER['REQUEST_URI']次のように、ローカルの ErrorDocument (スキームとサーバー名なし) を使用してみてください。

ErrorDocument 404 /my_404.php

$_SERVER['REQUEST_URI']その後、最初に要求された URL が返されると思われます。

于 2009-06-29T12:25:42.207 に答える
0

あなたの$_SERVER配列を見てくださいmy_404.php

var_dump($_SERVER);

必要なものがきっと見つかると思います。:-)

于 2009-06-29T12:02:44.407 に答える