web-dev-qa-db-fra.com

Faites index.html par défaut, mais permettez à 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 sur index.php, il me faut index.html. Est-il possible d'autoriser les deux, mais laissez index.html comme valeur par défaut pour les utilisateurs qui visitent www.domain.com?

56
Matt Rowles

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 dans l'ordre chacun des fichiers ci-dessus et servira le premier fichier trouvé lorsqu'un visiteur demande uniquement un répertoire. Si le serveur Web ne trouve dans le répertoire en cours aucun fichier correspondant aux noms figurant dans la directive DirectoryIndex, une liste de répertoires s'affichera dans le navigateur, affichant tous les fichiers du répertoire en cours.

La commande devrait être DirectoryIndex index.html index.php // la valeur par défaut est index.html

Référence: Ici .

90
The Alpha

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

remove_filter('template_redirect', 'redirect_canonical'); 

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

Ceci dit à WordPress de ne pas rediriger index.php retournez à la page racine, mais restez où elle est. De cette façon, index.html peut être assigné comme page par défaut dans .htaccess et peut travailler aux côtés de index.php.

16
Natacha Beaugeais

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 s'il ne le fait pas, le fichier suivant est servi d'index pour le répertoire. Donc, si vous avez la directive suivante:

DirectoryIndex file1.html file2.html

Apache servira /file.html en tant qu'index. Vous devrez modifier l'ordre des fichiers si vous souhaitez définir /file2.html en tant qu'index.

DirectoryIndex file2.html file1.html

Vous pouvez également définir un fichier d’index en utilisant un RewriteRule

RewriteEngine on

RewriteRule ^$ /index.html [L]

RewriteRule ci-dessus réécrira votre page d'accueil dans /index.html. La réécriture se fait en interne, donc http://example.com/ vous montrera le contenu de index.html.

5
starkeen

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

cela n'a aucun moyen? vous pouvez juste avoir besoin d'ajouter comme ça!

<IfModule dir_module>
    DirectoryIndex index.php index.html index.htm
</IfModule>

enter image description here

2
xgqfrms
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 cette option pour afficher .php dans l'URL de vos pages .html.

1
user1249679

Bonjour

Eh bien, j'ai essayé les méthodes mentionnées ci-dessus! ça marche oui, mais pas exactement comme je le voulais. Je voulais rediriger l'extension de page par défaut vers le domaine principal avec notre action ultérieure.

Voici comment je fais ça ...

# Accesible Index Page
<IfModule dir_module>
 DirectoryIndex index.php index.html
 RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(html|htm|php|php3|php5|shtml|phtml) [NC]
 RewriteRule ^index\.html|htm|php|php3|php5|shtml|phtml$ / [R=301,L]
</IfModule>

Le code ci-dessus capture simplement n’importe quel index. * Et le redirige vers le domaine principal.

Je vous remercie

1
Jodyshop