web-dev-qa-db-fra.com

Supprimer les fichiers .html et index.html de l'URL

J'ai des problèmes pour essayer de

  1. Supprimer l'extension .html des URL
  2. Supprimer 'index.html' d'une URL

1) Supprimer l'extension que j'ai essayé d'utiliser dans mon fichier htaccess.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

Cependant, lorsque je clique sur des liens dans mon code HTML, tels que <a href="abcde.html"></a>, le fichier .html n'est pas supprimé de l'URL et il ne me reste que www.website.com/abcde.html

2) J'ai essayé d'utiliser ceci pour supprimer l'index.html

RewriteCond %{THE_REQUEST} \/index\.(php|html)\ HTTP [NC]
RewriteRule (.*)index\.(php|html)$ /$1 [R=301,L]

Mais lorsque je charge un fichier index.html sur mon serveur, mon URL ressemble à ceci:

www.website.com/folder//

Je me retrouve avec un / supplémentaire à la fin.

Quelqu'un peut m'aider?

3
James Turner

En nous appuyant sur la réponse fournie par Anagio, couvrons toutes vos exigences:

  • Servir de manière transparente des fichiers .html sur des requêtes telles que /path/to/file si /path/to/file.html existe
  • Refuser les demandes directes contre /path/to/file.html
  • Servir /index.html sur les requêtes contre /

Configuration du répertoire:

Options +FollowSymLinks -MultiViews

DirectoryIndex index.html

RewriteEngine On
#
# Rewrite valid requests on .html files
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html?rw=1 [L,QSA]
#
# Return 404 on direct requests against .html files
RewriteCond %{REQUEST_URI} \.html$
RewriteCond %{QUERY_STRING} !rw=1 [NC]
RewriteRule ^ - [R=404]
2
danlefree

c'est de stackoverflow

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

# To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
0
Anagio