PHP会话并不总是使用Apache重定向创建

时间:2014-08-04 19:38:23

标签: php apache session redirect

我在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,但没有区别。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

我想到了这一点,但仍然不知道为什么会发生这种情况。最终修复它的是更改会话变量的名称。出于某种原因,$_SESSION['redirect_url']被覆盖或销毁。