Пользовательские страницы ошибок не должны быть доступны напрямую

В моем.htaccess я делаю следующее

Затем скрипт php переносит пользователя на соответствующую страницу / отображает соответствующий текст.

ErrorDocument 400 /error.php?e=400
ErrorDocument 401 /error.php?e=401
ErrorDocument 403 /error.php?e=403
ErrorDocument 404 /error.php?e=404
ErrorDocument 500 /error.php?e=500
ErrorDocument 503 /error.php?e=503

Для некоторых ошибок я пытаюсь отправить автоматическое письмо.

1) Как я могу предотвратить прямой доступ к странице, если не из Apache, например, просто кто-то печатает error.php?e=503

2) Как я могу получить последний посещенный URL (URL, который вызвал ошибку?

Спасибо

1 ответ

Решение

(1) Включить mod_rewrite и.htaccess через httpd.conf а затем вставьте этот код в свой .htaccess под DOCUMENT_ROOT каталог:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

ErrorDocument 400 /error.php?e=400
ErrorDocument 401 /error.php?e=401
ErrorDocument 403 /error.php?e=403
ErrorDocument 404 /error.php?e=404
ErrorDocument 500 /error.php?e=500
ErrorDocument 503 /error.php?e=503

# block direct access to /error.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+error\.php[\s?] [NC]
RewriteRule ^ - [F]

(2) Внутри /error.php получить доступ к исходному URI, используя:

$_SERVER["REQUEST_URI"];
Другие вопросы по тегам