2

を使用して 404 の URL を 404.html ページに渡すにはどうすればよいですか.htaccess

たとえば、無効なページにアクセスした場合:/user/123

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
ErrorDocument 404 /?404.php?error_path={???}
                                         ^
=========================================^ 

への 404 リダイレクトが発生します。/404.php?error_path=/user/123

4

3 に答える 3

3

Apache 2.4 以降では、mod-rewrite 変数を ErrorDocument ディレクティブで使用できます。

ErrorDocument 404 /404.php?uri=%{REQUEST_URI}

これにより、内部的に 404 uri が 404.php ページに送信され、404.php で次のコードを使用して操作できます。

<?php
echo "the broken uri is $_GET['uri']";
?>
于 2016-11-09T14:18:29.127 に答える
1

ErrorDocument ディレクティブを使用して、表示されたエラー ページの URL にエラーをスローしたサイトのパスを追加することはできません。ただし、PHP を使用しているため、$_SERVER["REDIRECT_URL"]エラー処理スクリプト内からグローバル値を使用できます。

詳細については、http: //httpd.apache.org/docs/current/custom-error.html#variablesを参照してください。

別の URL へのリダイレクトは便利ですが、エラー状態をより明確に説明または記録するために使用できる情報を渡すことができる場合に限ります。

これを実現するために、エラー リダイレクトが送信されると、追加の環境変数が設定されます。この環境変数は、元のヘッダー名の先頭に「REDIRECT_」を追加することで、元のリクエストに提供されたヘッダーから生成されます。これにより、エラー ドキュメントに元の要求のコンテキストが提供されます。

たとえば、より一般的な環境変数に加えて、次のようなものを受け取る場合があります。

REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/jpeg, image/png
REDIRECT_HTTP_USER_AGENT=Mozilla/5.0 Fedora/3.5.8-1.fc12 Firefox/3.5.8
REDIRECT_PATH=.:/bin:/usr/local/bin:/sbin
REDIRECT_QUERY_STRING=
REDIRECT_REMOTE_ADDR=121.345.78.123
REDIRECT_REMOTE_HOST=client.example.com
REDIRECT_SERVER_NAME=www.example.edu
REDIRECT_SERVER_PORT=80
REDIRECT_SERVER_SOFTWARE=Apache/2.2.15
REDIRECT_URL=/cgi-bin/buggy.pl

REDIRECT_ 環境変数は、リダイレクト前に存在していた環境変数から作成されます。それらは REDIRECT_ プレフィックスで名前が変更されます。つまり、HTTP_USER_AGENT は REDIRECT_HTTP_USER_AGENT になります。

REDIRECT_URL、REDIRECT_STATUS、および REDIRECT_QUERY_STRING は確実に設定され、その他のヘッダーは、エラー状態になる前に存在していた場合にのみ設定されます。

ErrorDocument ターゲットが外部リダイレクト (サーバーと同じホストを参照していても、http: のようなスキーム名で始まるもの) の場合、これらはいずれも設定されません。

于 2015-01-29T16:36:43.237 に答える