Пользовательские страницы ошибок не должны быть доступны напрямую
В моем.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"];