2017-10-12 5 views
0

Mon site Web est assez standard et contient un ensemble de fichiers d'index dans les dossiers. à savoir:Paramètre .htaccess pour la gestion des fichiers d'index, des barres obliques et des extensions de fichier

folder1 
     > index.php 
     > some-file.php 
     sub-folder1 
      > index.php 
     sub-folder2 
      > index.php 
folder2 
     > some-file.html 
index.html 

J'ai récemment fait quelques changements .htaccess qui étaient censés permettre à un utilisateur d'entrer un nom de fichier sans l'extension .html, mais être toujours dirigé le fichier correct sur le serveur. Il était également censé supprimer les barres obliques. Voici le code dans ma racine fichier .htaccess:

DirectoryIndex index.html 
RewriteEngine On 

# remove trailing slash 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s] 
#RewriteRule ^(.+?)/$ /$1 [R,L] 
RewriteRule ^(.+?)/$ /$1 [R=301,L] 

# To internally forward /dir/file to /dir/file.html 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1.html -f [NC] 
RewriteRule ^(.+?)/?$ /$1.html [L] 

Cela semble fonctionner correctement avec des fichiers html. par exemple, y compris un lien vers:

folder2/some-file

Cependant, quand je créer un lien vers folder1/ où le fichier d'index est un fichier php, je dirigeais une liste des fichiers et dossiers à l'intérieur folder1. Je m'attendrais à ce que le comportement de tirer vers le haut index.php pas la liste de fichiers.

Si j'insère le chemin entier dans un lien tel que: folder1/index.php cela fonctionne très bien.

Ce comportement a tout changé lorsque j'ai ajouté le paramètre .htaccess ci-dessus. Avant cela, je n'avais même pas de fichier .htaccess sur mon site. Je suppose que cela a à voir avec le code dans le fichier .htaccess, mais je n'ai aucune idée de comment le réparer, comme le code que j'ai trouvé sur un forum d'aide.

J'ai également remarqué qu'avant de changer mon paramètre .htaccess, je pouvais créer un lien vers ma racine index.html depuis n'importe quelle page et le navigateur afficherait simplement www.domain.com. maintenant il montre toujours www.domain.com/index

Vous vous demandez si quelqu'un sait le bon réglage que je devrais utiliser dans mon fichier .htaccess?

Répondre

2

Vous avez fait DirectoryIndex index.html et s'il n'y a pas de index.html dans le répertoire, la liste sera faite même s'il y a index.php là.

Ajouter comme ceci:

DirectoryIndex index.html index.php 

Donc, s'il n'y a pas de demande index.html dans le répertoire ira à index.php.