J'ai un site web statique avec des fichiers html et je veux les appeler sans la fin .html et une barre oblique..htaccess supprime l'extension .html et ajoute le slash de fin et interdit les fichiers .html
Par exemple:
www.test.com/test.html
devrait être disponible sous
www.test.com/test/
Je géré cela avec les éléments suivants .htaccess
Options -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([^\.]+)/$ $1.html
Mais les deux versions du plomb URL au même page. Comment puis-je rediriger (sans .html) ou lancer un 404 pour la version .html?
www.test.com/test.html
Ceci est la solution de travail avec un slash final. Merci @arkascha!
Options -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^/?(.+)\.html$ /$1/ [R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([^\.]+)/$ $1.html [END]
J'ai déjà essayé. Cela ne fonctionne pas car il se termine par une boucle infinie. (5ème ligne la barre oblique est manquante: RewriteRule^/? (. +) \. Html $/$ 1/[R = 301]) –
Je ne vois pas comment l'ensemble de règles ci-dessus devrait se terminer par une boucle de réécriture sans fin. Bien sûr, vous n'avez pas essayé quelque chose de similaire? A propos de cette barre oblique: il est rare d'ajouter une barre oblique, c'est pourquoi je l'ai omise ... – arkascha
J'ai copié votre code 1: 1 et google chrome se termine par un ERR_TOO_MANY_REDIRECTS. Je l'ai essayé avec différents navigateurs et ordinateurs. Essayez-le vous-même, vous aurez le même problème. –