简单的 htaccess 重写规则的奇怪行为
Bizarre behavior with simple htaccess rewrite rule
我在我的 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,这是怎么发生的?
我找到了解决办法!这是我见过的最微小和最意想不到的错误之一(笑)
当我注意到这只发生在 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!修好路径问题就解决了,每天都能学到新东西
我在我的 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,这是怎么发生的?
我找到了解决办法!这是我见过的最微小和最意想不到的错误之一(笑) 当我注意到这只发生在 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!修好路径问题就解决了,每天都能学到新东西