我正在使用.htaccess文件从网页中删除文件扩展名(.php)。我在这个网站上使用的代码如下:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# turn off index.php for home page
RewriteRule ^index\.php/?$ / [L,R=301,NC]
## hide .php extension snippet
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
到目前为止,一些网页都有$ Session变量,而.htaccess文件正在阻止传递这些变量。需要seeion变量的页面根本不会显示,即使提供正确的登录详细信息,它们也是完全空白的。我已经检查了session_start()正确定位的语法,它出现在相应页面的头部,如下所示:
<?php
session_start();
?>
一切顺利,直到我添加了.htaccess文件。
阅读了一些Apache文档,我意识到我需要包含[QSA]选项。我试图将其包含在上面,但是,我得到的只是500个错误。
有人可以指出我需要在上面包含QSA吗?
此致
鲍勃
大家好,
感谢您的投入。像我常说的那样保持简单。解决方案很明显我忽略了它。我在 RewriteBase /
之后添加了以下内容RewriteCond %{REQUEST_URI} !^/checklogin\.php$
基本上将include文件排除在传递参数之外。 Et Voila!
我希望这可以帮助其他人处理会话问题。
一切顺利,
鲍勃
答案 0 :(得分:1)
感谢您的投入。像我常说的那样保持简单。解决方案很明显我忽略了它。我在RewriteBase /
之后添加了以下内容RewriteCond %{REQUEST_URI} !^/checklogin\.php$
基本上将include文件排除在传递参数之外。 Et Voila!
我希望这可以帮助其他人处理会话问题。
一切顺利,
鲍勃