nginx redirect loop, supprime index.php de l'URL
Je veux tout les requêtes comme http://example.com/whatever/index.php
de faire une redirection 301 de http://example.com/whatever/
.
J'ai essayé d'ajouter:
rewrite ^(.*/)index.php$ $1 permanent;
location / {
index index.php;
}
Le problème ici, cette réécriture est exécuté sur la racine de l'url, ce qui provoque une infinie boucle de redirection.
Edit:
J'ai besoin d'une solution générale
http://example.com/
doit servir le fichier webroot/index.php
http://example.com/index.php
devrait redirection 301 pour http://example.com/
http://example.com/a/index.php
devrait redirection 301 pour http://example.com/a/
http://example.com/a/
doit servir à la index.php script à webroot/a/index.php
Fondamentalement, je ne veux plus afficher "index.php" dans la barre d'adresse. J'ai des vieux backlinks que j'ai besoin de rediriger vers l'url canonique.
source d'informationauteur jcampbell1
Vous devez vous connecter pour publier un commentaire.
La grande question, avec la solution semblable à un autre que j'ai répondu sur ServerFault récemmentmême si c'est beaucoup plus simple ici, et vous savez exactement ce dont vous avez besoin.
Ce que vous voulez ici est de faire la redirection lorsque l'utilisateur demande explicitement
/index.php
mais jamais rediriger toutes les demandes internes qui finissent par être servi par leindex.php
script, tel que défini par laindex
directive.Cela devrait le faire, en évitant les boucles:
Essayer
Garder la première barre de la correspondance :
Essayer
Un autre avantage de cette façon de faire est que nginx un retour plus rapide qu'une réécriture.