Faire index.html par défaut, mais permettre à index.php d’être visité s’il est saisi

J’ai la ligne suivante dans mon fichier .htaccess:

DirectoryIndex index.html index.php 

Chaque fois que je vais à index.php, il me faut index.html. Est-il possible d’autoriser les deux, mais laissez index.html la valeur par défaut pour les utilisateurs qui visitent www.domain.com?

Par défaut, DirectoryIndex est défini sur:

 DirectoryIndex index.html index.htm default.htm index.php index.php3 index.phtml index.php5 index.shtml mwindex.phtml 

Apache recherchera chacun des fichiers ci-dessus, dans l’ordre, et servira le premier qu’il trouve lorsqu’un visiteur demande juste un répertoire. Si le serveur Web ne trouve aucun fichier dans le répertoire en cours qui correspond aux noms de la directive DirectoryIndex, une liste de répertoires sera affichée pour le navigateur, affichant tous les fichiers du répertoire en cours.

L’ordre devrait être DirectoryIndex index.html index.php // default est index.html

Référence: ici .

Si vous utilisez WordPress, il existe maintenant un filtre pour résoudre ce problème:

 remove_filter('template_redirect', 'redirect_canonical'); 

(Mettez ceci dans les functions.php votre thème)

Cela indique à WordPress de ne pas redirect index.php vers la page racine, mais de s’asseoir là où il se trouve. De cette façon, index.html peut être assigné à être la page par défaut dans .htaccess et peut fonctionner avec index.php .

Je suis d’accord avec la réponse acceptée de @ TheAlpha, Apache lit les fichiers cibles DirectoryIndex de gauche à droite, si le premier fichier existe, apche le sert et si ce n’est pas le cas, le fichier suivant est servi comme index pour le répertoire. Donc, si vous avez la directive suivante:

 DirectoryIndex file1.html file2.html 

Apache fournira /file.html comme index, vous devrez changer l’ordre des fichiers si vous voulez définir /file2.html comme index

 DirectoryIndex file2.html file1.html 

Vous pouvez également définir un fichier d’index à l’aide d’une règle RewriteRule

 RewriteEngine on RewriteRule ^$ /index.html [L] 

RewriteRule ci-dessus va réécrire votre page d’accueil à /index.html la réécriture se produit en interne afin que http://example.com/ vous montre le contenu de index.html.

 RewriteEngine on RewriteRule ^(.*)\.html$ $1.php%{QUERY_STRING} [L] 

Placez ces deux lignes en haut de votre fichier .htaccess. Il affichera .html dans l’URL de vos pages .php.

 RewriteEngine on RewriteRule ^(.*)\.php$ $1.html%{QUERY_STRING} [L] 

Utilisez-le pour afficher .php dans l’URL de vos pages .html.

DirectoryIndex index.html index.htm default.htm index.php index.php3 index.phtml index.php5 index.shtml mwindex.phtml

ça n’a aucun moyen? il se peut que vous deviez simplement append comme ça!

  DirectoryIndex index.php index.html index.htm  

entrer la description de l'image ici