2009-04-09 10 views
0

Je veux être en mesure de rediriger l'utilisateur quand ils tapent dans http://example.com/user/user-name-http://example.com/user/user-name, qui affiche les détails de l'utilisateurrewriterule Apache, php

C'est ce que je me sers, mais il me donne des erreurs

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^.*$ /user/ [R] 

L'erreur qui donne Firefox est

Redirect boucle

Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui ne se terminera jamais. Le navigateur a cessé d'essayer de récupérer l'élément demandé. Le site redirige la demande d'une manière qui ne se terminera jamais.

  • Avez-vous désactivé ou bloqué les cookies requis par ce site?
  • REMARQUE: Si l'acceptation des cookies du site ne résout pas le problème, il s'agit probablement d'un problème de configuration du serveur et non de votre ordinateur.

Merci

+0

Ces deux URL sont les mêmes, donc vous n'aurez pas besoin d'une redirection, P –

+0

les gars je peux avoir une solution plutôt que de me dire que j'ai tort: ​​D –

+0

J'ai offert une solution à la fin de ma réponse. Quelle est exactement votre opération souhaitée? À l'heure actuelle, vous essayez de rediriger l'utilisateur d'une URL vers le même emplacement, ce qui n'aboutira à rien. –

Répondre

1

sont les deux urls pas la même chose?

Edit: quand je lui répondis, la seule question a affirmé la nécessité, pas l'erreur

+0

adam, je suis en fait confus –

5

Vous avez fait une boucle de redirection. Vous essayez d'aller de domain.com/user/user-name à domain.com/user/user-name (la même URL). Ce qui se passe est:

  1. Accès utilisateur domain.com/user/user-name. L'utilisateur est redirigé vers le domain.com/user/user-name (au même endroit). L'utilisateur est de nouveau redirigé vers domain.com/user/user-name (au même endroit). L'utilisateur est de nouveau redirigé vers domain.com/user/user-name (au même endroit).
  2. Répéter ad nauseam ...

Peut-être que vous vouliez dire rediriger domain.com/user/user-name à domain.com/users.php?u=user ou quelque chose?

3

Vous êtes en train de rediriger tout vers/user/including itself.

Editer: Chaque requête passe par le même ensemble de réécritures, et puisque votre regex de ^. * $ Correspond vous redirigerez/user/to/user/again. Le navigateur ne fait que vous aider en arrêtant la boucle après quelques tentatives sur la même URL.

Si vous cherchez à rediriger/a/foo/b/foo, vous avez besoin quelque chose comme:

RewriteRule ^/a /(.*)$/b/1 $ [R]

..mais vous devez faire en sorte que la source et la destination ne se chevauchent pas comme dans votre exemple initial, sinon vous obtiendrez une boucle de redirection infinie.

+0

oui et dans la racine il y a un fichier index.php qui affichera le contenu requis –

1

Comme les autres l'ont déjà dit, le RewriteRule correspond à n'importe quel chemin URI (y compris /user/) et conduit ainsi à une boucle infinie.

Pour éviter cela, vous devez exclure ce chemin URI:

# either 
RewriteRule !^/user/$ /user/ [R] 
# or 
RewriteCond %{REQUEST_URI} !^/user/$ 
RewriteRule^/user/ [R] 

Ces règles redirigent chaque chemin URI qui ne correspond pas par ^/user/$-/user/. Si vous souhaitez utiliser cette règle dans un fichier .htaccess, vous devez supprimer la barre oblique dans le modèle de la directive RewriteRule (donc juste ^user/$).