在根目录中我有文件:.htaccess 和 page.php 在 /test/ 子文件夹中,我有文件:define_session.php 和 write_session.php
.htaccess:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)/(.*)?$ page.php?p1=$1&p2=$2&p3=$3 [L,QSA]
# www.example.com/parameter1/parameter2/parameter3/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)?$ page.php?p1=$1&p2=$2 [L,QSA]
# www.example.com/parameter1/parameter2/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ page.php?p1=$1 [L,QSA]
#www.example.com/parameter1/
page.php
<?php
echo "Hello World";
//session_start();
//session_destroy();
?>
/测试/session_define.php
<?php
session_start();
$_SESSION["session_test"] = "123456789";
?>
<a href="session_write.php">session_write.php</a>
/测试/session_write.php
<?php
session_start();
echo "session_test:".$_SESSION["session_test"]."<br>";
?>
好的场景:
错误场景(在page.php中我取消注释“删除会话”):
我正在调用子文件夹中的特定 php 文件(URL),我认为无法满足条件:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ page.php?p1=$1 [L,QSA]
我不明白当我直接调用PHP文件“/test/session_define.php”时page.php如何删除SESSION。 不应使用 .htaccess 进行重写。 在page.php中,我还特意声明了: echo "Hello World";但这没有显示,只有会话被删除。
请问我做错了什么?我错了什么? 非常感谢您的帮助。
如果页面未明确指定网站图标的位置,某些浏览器会默认尝试请求
/favicon.ico
。
如果你没有这样的文件,这将触发你的最后一条规则,并被重写为
/page.php?p1=favicon.ico
。所以你的会话会被该请求破坏。