2010-03-28 8 views
0

Dans l'une de la page où j'est les administrateurs sont autorisés, cependant, j'utiliser si la session est pas définie, l'en-tête de les rediriger vers des œuvres index.php et cette méthode.PHP Redirect emplacement avec htaccess

Si je remplace index.php avec maison qui est pour le htaccess qui il change à index.php mais il donne une erreur dans le navigateur

Cela fonctionne:

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

Cela ne fonctionne pas:

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

htaccess:

RewriteRule ^home$ index.php 

L'erreur dans Firefox:

La page ne réoriente correctement

Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui ne sera jamais Achevée.

Ce problème peut parfois être causé par la désactivation ou le refus d'accepter les cookies .

Qu'est-ce qui ne va pas? Comment puis-je faire fonctionner cette méthode?

Répondre

1

Vous redirigez index.php à la maison dans votre fichier php, et la maison à index.php dans .htaccess. Firefox vous dit qu'il y a une boucle de redirection infinie.

Editer: index.php et home sont la même chose, donc rediriger vers l'un ou l'autre se traduira par une boucle infinie. Vous devez faire quelque chose comme ceci:

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

Et puis dans index.php

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

donc je ne peux pas utiliser la « maison » dans l'en-tête de php? – MacMac

+0

Vous pouvez, vous ne pouvez pas rediriger vers lui-même. – Rob

+0

@Wayne: Vous pouvez utiliser 'home' dans l'en-tête PHP, mais assurez-vous de changer la valeur de' $ _SESSION ['MEMBER'] 'pour éviter une boucle infinie. – Dor

0

Vous avez créé une boucle infinie. Lorsque PHP exécute le code suivant:

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

Il redirige le navigateur vers /home. Mais dans .htaccess vous réécrivez l'URL /index.php. Ce qui fait de nouveau PHP pour exécuter le code PHP ci-dessus.

1

Au Contraire. Voici comment vous portez des sessions PHP id dans une redirection .htaccess ...

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

attention à la dernière partie ... [QSA,L,E=REDIRECT_URL:$1]