Simple .htaccess RewriteRule ne fonctionne pas

Je ne sais pas pourquoi cela ne fonctionne pas:

RewriteEngine On RewriteCond %{HTTP_HOST} example.com$ [NC] RewriteRule ^.+ http://example.com [L] 

Le RewriteCond fonctionne aussi loin que je peux.

Pour moi, le RewriteRule lit comme suit:

  • ^ Commence le match
  • .+ Un ou plusieurs caractères

Pourtant, Firefox 44 me dit

La page ne redirige pas correctement

Firefox a détecté que le serveur redirige la demande pour cette adresse d’une manière qui ne se terminera jamais.

Si RewriteRule commençait par ^.* , Je m’attendrais à ce que le serveur soit pris dans une boucle sans fin.

Mais ^.+ Doit travailler, non?

Vous obtenez une boucle de redirection en raison de l’ajout du gestionnaire DirectoryIndex dans REQUEST_URI.

Pour résoudre ce problème, vous pouvez utiliser cette règle:

 RewriteCond %{HTTP_HOST} www.localhost$ [NC] RewriteCond %{REQUEST_URI} !^/index\. [NC] RewriteRule ^.+ http://www.localhost [L,R] 

RewriteCond %{REQUEST_URI} !^/index\. [NC] RewriteCond %{REQUEST_URI} !^/index\. [NC] arrêtera la boucle de redirection car /index.html ou /index.html est généralement le gestionnaire DirectoryIndex .