我在htaccess中使用这个简单的重写规则将任何不存在的文件路径重定向到index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
这完全正常,但我没有什么问题,在index.php文件中有一行可以取消上一个会话:
index.php
.....
session_unset()
.....
现在我有另一个文件register.php使用它自己的会话数据,当我运行register.php它工作正常但会话未设置,似乎首先执行index.php然后register.php !!我通过在index.php中注释掉session_unset()函数来加倍检查,并且会话在register.php中正常工作
发生了什么事?如果在第一个地方没有对index.php进行重定向会怎么回事?
答案 0 :(得分:0)
我找到了解决方案!这是我见过的最微小和意想不到的错误之一(笑) 当我注意到这只发生在register.php时,我发现问题的原因,之所以在register.php之前调用index.php只是因为错误的css路径:
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
在我的情况下应该是
<link rel="stylesheet" type="text/css" href="css/stylesheet.css"/>
发生的事情是因为stylesheet.css的路径不存在,服务器会将其重写为index.php然后index.php运行删除所有会话,但因为这只是css包含你不会看到这个你将留在register.php!当路径被修复后,问题就解决了,我每天都学到新东西。