我在Apache中配置了自定义错误处理,将用户重定向到某个PHP脚本以获取多个不同的错误代码。这是http.conf中的配置:
Order allow,deny
Allow from all
ErrorDocument 400 /error/apache_error.php
ErrorDocument 401 /error/apache_error.php
ErrorDocument 403 /error/apache_error.php
ErrorDocument 404 /error/apache_error.php
ErrorDocument 500 /error/apache_error.php
在我的每个php页面上,我创建一个包含当前位置的会话,如下所示:
session_start();
$_SESSION['redirect_url'] = $_SERVER['SCRIPT_NAME'];
我正在测试的方法是转到我想要创建会话变量的页面,然后输入一个无效的URI,例如192.168.1.100/invalid。 IP地址是我的本地apache服务器。
到目前为止,我只使用404测试,因为它很容易制作。 Apache总是正确地重定向到/error/apache_error.php,但是对于某些页面,会话变量包含预期的路径,对于某些页面,它在检查apache_error.php中的内容时返回NULL。
我想提一下,我在http.conf中也有一个重写规则来删除php扩展。我想也许这可能会导致它以某种方式导致我设置RewriteEngine Off
,但没有区别。
我在这里缺少什么?
答案 0 :(得分:0)
我想到了这一点,但仍然不知道为什么会发生这种情况。最终修复它的是更改会话变量的名称。出于某种原因,$_SESSION['redirect_url']
被覆盖或销毁。