web-dev-qa-db-fra.com

htaccess redirige index.php vers la racine (y compris les sous-domaines)

J'essaie de rediriger les fichiers index.php vers la racine /, j'ai cherché et trouvé plusieurs extraits de code similaires à:

RewriteCond %{THE_REQUEST} ^.*/index.php 
RewriteRule ^(.*)index.php$ http://www.domain.com/$1 [R=301,L] 

Cela ne fonctionnera cependant pas pour les sous-domaines, exemple ci-dessous:

  1. J'ai un sous-domaine: subdomain.domain.com
  2. Un utilisateur visite http://subdomain.domain.com/index.php
  3. En utilisant htaccess ci-dessus, ils sont redirigés vers http://www.domain.com/ plutôt que http://subdomain.domain.com/

Est-ce que quelqu'un sait comment ajuster le htaccess ci-dessus pour qu'il prenne en compte le sous-domaine et les redirige vers l'emplacement approprié?

par exemple. si un utilisateur visite http://subdomain.domain.com/index.php il ira à http://subdomain.domain.com/

Points bonus:

Existe-t-il un htaccess qui peut simplement appliquer cette règle à tous les dossiers?

Donc, pour tout dossier avec un index.php, ils seront simplement redirigés vers sa racine, par exemple http://subdomain.domain.com/folder1/folder2/index.php irait automatiquement à http://subdomain.domain.com/folder1/folder2/

29
Alex

Faites ceci:

RewriteCond %{THE_REQUEST} ^.*/index\.php 
RewriteRule ^(.*)index.php$ /$1 [R=301,L] 
76
ThinkingMonkey

J'ai basé le code suivant sur @ la réponse de ThinkingMonkey

RewriteRule ^(.*)index\.(php|html?)$ /$1 [R=301,NC,L]

Il redirige les URI se terminant par index.php , index.htm ou index.html à /. Fonctionne également avec les sous-répertoires.

Notez également l'indicateur NC. Cela le rend insensible à la casse. Cela fonctionne donc même si l'URI est en majuscules comme INDEX.PHP .

12
caiosm1005