2010-03-28 88 views
0

在我的頁面之一是允許管理員,但是,如果會話未設置,我會使用標題將它們重定向到index.php,該方法的作品。PHP使用htaccess重定向位置

如果我取代的index.php與這是它改變爲的index.php htaccess的,但它在瀏覽器中提供了一個錯誤

這工作:

if(!isset($_SESSION['MEMBER'])){ header("Location: index.php"); } 

這確實不行:

if(!isset($_SESSION['MEMBER'])){ header("Location: home"); } 

的htaccess:

RewriteRule ^home$ index.php 

Firefox中的錯誤:

的網頁沒有正確重定向

的Firefox已經檢測到服務器重定向此 地址的請求的方式,永遠不會 完成。

此問題有時可能由禁用或拒絕接受 Cookie引起。

它有什麼問題?我如何獲得此方法?

回答

1

您正在將index.php重定向到您的php文件中的home以及home.php中.htaccess中的index.php。 Firefox告訴你有一個無限的重定向循環。

編輯: index.php和home是一回事,所以重定向到兩者都會導致無限循環。你需要做這樣的事情:

#.htaccess 
RewriteRule ^home$ index.php  # public page 
RewriteRule ^members$ members.php # member only page 

然後在index.php文件

# index.php 
if(isset($_SESSION['MEMBER'])){ 
    header("Location: members"); 
    exit; 
} 
+0

所以我不能在PHP頭使用的「家」? – MacMac 2010-03-28 20:07:08

+0

你可以,你只是不能重新回到自己。 – Rob 2010-03-28 20:11:26

+0

@Wayne:你可以在PHP頭文件中使用'home',但一定要改變$ _SESSION ['MEMBER']的值來防止無限循環。 – Dor 2010-03-28 20:11:37

0

您已經創建了一個無限循環。 當PHP執行下面的代碼:

if(!isset($_SESSION['MEMBER'])){ header("Location: home"); } 

它瀏覽器重定向到/home。 但在.htaccess中,您將URL重寫爲/index.php。這又使PHP執行上面的PHP代碼。

1

Au Contraire。這裏是你怎麼處理PHP會話ID的.htaccess重定向中的...

RewriteEngine On 
RewriteRule ^(.*)$ /home/ [QSA,L,E=REDIRECT_URL:$1] 

,請注意最後一位... [QSA,L,E=REDIRECT_URL:$1]