.htaccess正在删除.php扩展名,未传递会话变量

.htaccess正在删除.php扩展名,未传递会话变量,php,apache,.htaccess,Php,Apache,.htaccess,我正在使用.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

我正在使用.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]
<?php 
    session_start();
?>
然而,到目前为止还不错,一些网页有$Session变量,.htaccess文件正在阻止这些变量的传递。需要seesion变量的页面将完全不显示,即使提供正确的登录详细信息,它们也完全为空。我已经检查了会话_start()的语法是否正确定位,它出现在相应页面的开头,如下所示:

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]
<?php 
    session_start();
?>
本质上排除了include文件传递其参数。瞧

我希望这能帮助其他人解决会话问题

祝你一切顺利


鲍勃

谢谢你的意见。像我常说的那样保持简单。这个解决方案太明显了,我忽略了它。我在重写base之后添加了以下内容/

RewriteCond %{REQUEST_URI} !^/checklogin\.php$ 
本质上排除了include文件传递其参数。瞧

我希望这能帮助其他人解决会话问题

祝你一切顺利


Bob

空白页通常意味着出现致命错误。启用错误报告:
ini\u集('display\u errors',1);ini设置(“显示启动错误”,1);错误报告(-1)
并告诉我们您收到了哪些错误。并检查apache错误日志中的
500
。以下是表单提交后加载的脚本日志:注意:未定义索引:第13行的/www/sites/020/c16/www.lbfl.co.uk/web/checklogin.php中的myusername注意:第16行的/www/sites/020/c16/www.lbfl.co.uk/web/checklogin.php中的未定义索引:mypassword注意:未定义索引:在第19行的/www/sites/020/c16/www.lbfl.co.uk/web/checklogin.php中出现错误,因此它没有从表单传递变量??该页面位于www.lbfl.co.uk/client-pages.phpA未定义索引不会抛出500。您的日志文件中还有什么?请编辑您的问题。在注释中读取日志是很可怕的。您不需要
QSA标志
,然后先尝试注释出
RewriteRule^index\.php/?$/[L,R=301,NC]
规则。只是为了澄清一下:会话ID通常存储在cookie中,而不是GET变量中(取决于您的php.ini)。因此,Apache重定向对会话应该没有影响。