【问题标题】:.htaccess removing .php extension, session variables not passed.htaccess 删除 .php 扩展名,会话变量未通过
【发布时间】:2014-03-03 11:25:14
【问题描述】:

我正在使用 .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 文件阻止了这些变量的传递。需要 seesion 变量的页面根本不会显示,即使提供正确的登录详细信息,它们也是完全空白的。我检查了正确定位 session_start() 的语法,该语法出现在相应页面的开头,如下所示:

<?php 
    session_start();
?>

在我添加 .htaccess 文件之前一切正常。

阅读了一些 Apache 文档后,我意识到我需要包含 [QSA] 选项。我试图在上面包含这个,但是,我得到的只是 500 个错误。

有人能指出我需要在上面包含 QSA 的地方吗?

问候,

鲍勃

大家好,

感谢您的意见。正如我经常说的那样,保持简单。解决方案是如此明显,我忽略了它。我在 RewriteBase /

之后添加了以下内容
RewriteCond %{REQUEST_URI} !^/checklogin\.php$ 

基本上排除了包含文件传递它的参数。瞧瞧!

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

一切顺利,

鲍勃

【问题讨论】:

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

标签: php apache .htaccess


【解决方案1】:

感谢您的意见。就像我经常说的那样保持简单。解决方案是如此明显,我忽略了它。我在 RewriteBase /

之后添加了以下内容
RewriteCond %{REQUEST_URI} !^/checklogin\.php$ 

基本上排除了包含文件传递它的参数。瞧瞧!

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

一切顺利,

鲍勃

【讨论】:

    猜你喜欢
    • 2021-07-11
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 2014-12-22
    相关资源
    最近更新 更多