簡體   English   中英

.htaccess刪除.php擴展名,未傳遞會話變量

[英].htaccess removing .php extension, session variables not passed

我正在使用.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$ 

本質上是將包含文件排除在傳遞其參數之外。 等等!

我希望這可以幫助其他人解決會話問題。

祝一切順利,

短發

感謝您的輸入。 就像我經常說的那樣簡單。 解決方案是如此明顯,以至於我忽略了它。 我在RewriteBase /之后添加了以下內容

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

本質上是將包含文件排除在傳遞其參數之外。 等等!

我希望這可以幫助其他人解決會話問題。

祝一切順利,

短發

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM