php - 自定义错误页面无法直接访问

标签 php apache .htaccess apache2 errordocument

在我的 .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) 通过 httpd.conf 启用 mod_rewrite 和 .htaccess然后将此代码放入您的 .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"];

关于php - 自定义错误页面无法直接访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18495372/

相关文章:

php - 在php中的html代码中包含php

php - 带有子表单的 Symfony 表单

php - 你如何使 preg_replace 捕获大写 (php)?

Python Flask mod-wsgi 自定义 header 不在请求中

apache - 使用 .htaccess 将一个文件夹重定向到另一个文件夹,但保留原始 URL 并阻止对所有其他文件夹的访问

php - 使用 .htaccess 删除 .php 并重定向到其非 .php 版本

php - MVC htaccess 重写

PHP 内部 : Where are Arrays Created

apache - 如何使用 mod_proxy 只转发 *.jsp 或 *.do 请求到 Tomcat?

apache - 整个目录使用相同的 PHP 文件