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


PHP session not always created with Apache 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,但没有区别。

我在这里错过了什么?

我明白了,但仍然不知道为什么会发生。最终修复它的方法是更改会话变量的名称。由于某种原因,$_SESSION['redirect_url']被覆盖或销毁。