2014-03-03 63 views
0

我正在使用.htaccess文件从网页中删除文件扩展名(.php)。我是从这个网站使用的代码如下:.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$ 

从本质上传递它的参数除了包含文件。 Et Voila!

我希望这可以帮助别人解决会话问题。

一切顺利,

鲍勃

+2

一个空白页往往意味着致命的错误出现。启用error_reporting:'ini_set('display_errors',1); ini_set('display_startup_errors',1); error_reporting(-1);'告诉我们你收到了什么错误。并检查你的apache error_log为'500'。 –

+0

以下是表单提交后载入脚本的日志:注意:未定义索引:myusername在/www/sites/020/c16/www.lbfl.co.uk/web/checklogin.php on line 13 :未定义索引:mypassword在/www/sites/020/c16/www.lbfl.co.uk/web/checklogin.php在第16行 注意:未定义的索引:在/ www/sites/020/c16/www中的bollock .lbfl.co。第19行的uk/web/checklogin.php所以它没有传递来自表单的变量?该页面位于www.lbfl.co.uk/client-pages.php – bobfelstead

+0

未定义的索引不会抛出500.您的日志文件还有什么?请编辑你的问题。阅读评论中的日志是非常可怕的。 –

回答

1

感谢您的输入。保持简单,就像我经常说的那样。解决方案非常明显,我忽略了它。我在RewriteBase添加了以下内容/

RewriteCond %{REQUEST_URI} !^/checklogin\.php$ 

基本上不包括传递它的参数的包含文件。 Et Voila!

我希望这可以帮助别人解决会话问题。

一切顺利,

鲍勃