Comment supprimer .html
de l'URL d'une page statique ?
Aussi, j'ai besoin de rediriger toutes les URL avec .html
vers celles sans. (c'est-à-dire www.example.com/page.html
vers www.example.com/page
).
Comment supprimer .html
de l'URL d'une page statique ?
Aussi, j'ai besoin de rediriger toutes les URL avec .html
vers celles sans. (c'est-à-dire www.example.com/page.html
vers www.example.com/page
).
@Martijn, je pense que c'est là le point - que vous avez un fichier à /page.html
, mais que vous voulez y faire référence avec /page
. Je soupçonne que cette réponse a mal compris la question et a supposé que l'auteur posait ses pages sans l'extension .html
(ce qui, tel que je le comprends, n'était pas le cas).
Cela devrait fonctionner pour vous:
#example.com/page affichera le contenu de example.com/page.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]
#301 de example.com/page.html à example.com/page
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
J'obtenais une erreur 404 dans Godaddy avec ce code et je l'ai corrigée en mettant : Options +FollowSymLinks -MultiViews -Indexes en haut.
J'ai essayé de le faire en localhost, mais cela ne fonctionne pas, y a-t-il autre chose que je dois faire, dois-je lier le fichier .htaccess, ou comment la page le reconnaît-elle?
Vous devrez vous assurer d'avoir également Options -MultiViews
.
Aucune des méthodes ci-dessus n'a fonctionné pour moi sur un hébergeur cPanel standard.
Cela a fonctionné :
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
Parmi toutes les réponses ci-dessus, celle-ci a enfin fonctionné.. Je pense que c'est parce que mon site est hébergé sur godaddy avec cPanel. La clé est Options -MultiViews.
Oui, rien dans cette section ne fonctionne à l'exception de cette réponse! Tu as sauvé la journée!
Merci pour vos réponses. J'ai déjà résolu mon problème. Supposons que j'ai mes pages sous http://www.votresite.com/html, les règles suivantes de .htaccess s'appliquent.
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /html/(.*).html\ HTTP/
RewriteRule .* http://localhost/html/%1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /html/(.*)\ HTTP/
RewriteRule .* %1.html [L]
J'utilise ce .htacess pour supprimer l'extension .html de l'URL de mon site, veuillez vérifier que ceci est le code correct :
RewriteEngine on
RewriteBase /
RewriteCond %{http://www.proofers.co.uk/new} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.html [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ http://www.proofers.co.uk/new/$1 [R=301,L]
Cela semblait fonctionner pour moi, contrairement aux autres solutions présentées ici, merci. J'ajouterais cependant que vous devez toujours mettre à jour le(s) lien(s) dans votre HTML (donc si vous reliez initialement à votre fichier .html en tant que , vous devez le mettre à jour en tant que [example.com/page1">> et ensuite cela fonctionnera.](<a href=)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
En supprimant ".html", voulez-vous dire "ne pas exiger que .html soit présent" ?
0 votes
@Tomalak: Oui et également rediriger les URL avec ".html" vers celles sans. Mon problème est que cela entraîne une redirection infinie. Ma configuration actuelle permet à www.example.com/page.html et www.example.com/page d'être tous les deux accessibles, ce qui n'est pas favorable pour le référencement SEO.
3 votes
Voir stackoverflow.com/questions/5574442/…, stackoverflow.com/questions/5573485/… et stackoverflow.com/questions/5639367/mod-rewrite-recursive-loop
0 votes
@Tomalak : Merci pour les conseils. La lecture de la documentation de mod_rewrite était très utile.