
🛠 Comment ajouter l'extension .html aux URLs WordPress
Ajout de .html aux URL WordPress sans plugins: trois méthodes, plus une suppression sécurisée avec redirections.
Vous avez migré votre site depuis Joomla ou un site statique en HTML vers WordPress et les moteurs de recherche ont déjà indexé des centaines de pages se terminant par .html? Vous ne voulez pas perdre vos positions, mais les réglages de permaliens standards ne proposent pas ce format.
En pratique, le .html dans une URL n'est pas une question d'esthétique. C'est une assurance contre les erreurs 404 lors d'une migration, lorsque l'ancienne structure site.ru/page.html devient site.ru/page/. Chaque lien cassé dans l'index représente une perte de trafic. Heureusement, WordPress vous permet d'ajouter l'extension .html de manière native, sans bidouillage ni plugins.
Voici trois méthodes: via le panneau d'administration (la plus simple), via du code dans functions.php et pour les types de publication personnalisés. Ainsi que la suppression sécurisée du .html avec une redirection si vous n'avez plus besoin de ce format.
💡 Aperçu rapide:
- Ajoutez
.htmlvia Réglages → Permaliens, 30 secondes, sans code - Si la méthode native ne fonctionne pas, modifiez
functions.php(3 lignes) - Pour les types de publication personnalisés, le filtre
post_type_link - Supprimez
.htmlsans 404, une redirection dans.htaccess
Pourquoi les liens WordPress ont besoin de l'extension.html
À l'époque des sites statiques, chaque page était un fichier .html physique sur le serveur. Le navigateur demandait site.ru/about.html et recevait un document prêt à l'emploi. WordPress fonctionne différemment: toutes les URL sont virtuelles, servies par index.php via mod_rewrite.
Mais l'habitude des terminaisons en «fichier» persiste. Voici des scénarios typiques où le .html est réellement nécessaire:
- Refonte ou migration depuis un site statique. Les anciennes URL sont déjà dans l'index de Google et de Yandex. Les modifier sans redirection garantit une chute de classement pendant 2 à 4 mois.
- Migration depuis Joomla, Drupal, ModX. De nombreux anciens CMS généraient par défaut du
.htmlà la fin de l'adresse. - Demande du client. Le client «le veut comme avant», point final. Discuter prend plus de temps que de le faire.
WordPress gère ces trois cas sans aucun plugin.
Première méthode: via le panneau d'administration
La voie la plus rapide. Allez dans Réglages → Permaliens et sélectionnez l'option «Structure personnalisée».
Dans le champ de structure, ajoutez .html à la fin du modèle. Par exemple:
1 /%category%/%postname%.html
Ou si vous n'avez pas besoin des catégories:
1 /%postname%.html
Cliquez sur «Enregistrer les modifications». C'est fait. Toutes les URL des articles, nouveaux et existants, recevront la terminaison .html. Cette méthode n'affecte pas les pages du site (page); elles nécessiteront le code de la section suivante.
Remarque: si le site a déjà des liens indexés sans .html, WordPress ne redirige PAS automatiquement des anciennes URL vers les nouvelles. Vous aurez besoin d'un plugin de redirection distinct ou de règles dans .htaccess.
Deuxième méthode: via functions.php
Parfois, le panneau d'administration ne suffit pas: le thème ou un autre plugin écrase la structure des liens. On passe alors par le code.
Ajoutez ceci au fichier functions.php de votre thème enfant ou via le plugin Code Snippets:
1 /** 2 * Adds .html to the end of WordPress page URLs. 3 * After inserting the code, go to Settings → Permalinks 4 * and click "Save Changes" to flush the rewrite rules cache. 5 */ 6 add_action('init', function() { 7 global $wp_rewrite; 8 if (! strpos($wp_rewrite->get_page_permastruct(), '.html')) { 9 $wp_rewrite->page_structure .= '.html'; 10 } 11 });
Ce qui se passe ici: le hook init se déclenche à chaque chargement de WordPress et ajoute .html à la structure d'URL des pages via la propriété page_structure de l'objet global $wp_rewrite. La vérification strpos empêche un double ajout si le code est inséré deux fois.
Après avoir ajouté le code, pensez à aller dans Réglages → Permaliens et à cliquer sur «Enregistrer les modifications». Sans cette étape, WordPress ne reconstruira pas le cache des règles de réécriture et les nouvelles URL ne fonctionneront pas, vous obtiendrez une 404.
Si la méthode native et le code ne vous aident pas, vous pouvez utiliser le plugin Permalink Manager Lite. Il compte plus de 100 000 installations actives, une note de 5 étoiles et prend en charge les règles de réécriture pour tout type de contenu, y compris les taxonomies et WooCommerce.
Comment ajouter.html aux types de publication personnalisés (CPT)
Votre site comporte un portfolio, des témoignages, des produits ou un autre type de contenu créé via register_post_type. L'écran standard «Permaliens» ne les affecte pas. Nous intervenons via le filtre post_type_link:
1 /** 2 * Adds .html extension to the URL of the custom post type "portfolio". 3 * Replace 'portfolio' with your CPT slug. 4 */ 5 function sdstudio_cpt_html_permalink($post_link, $post) { 6 if ($post->post_type === 'portfolio') { 7 return home_url('/portfolio/' . $post->post_name . '.html'); 8 } 9 return $post_link; 10 } 11 add_filter('post_type_link', 'sdstudio_cpt_html_permalink', 10, 2);
Après avoir inséré le code, allez de nouveau dans Réglages → Permaliens → Enregistrer les modifications. Le filtre post_type_link fonctionne à la volée: WordPress construit l'URL, vous l'interceptez pour le type de publication souhaité et vous y ajoutez .html.
Si le CPT est enregistré avec un slug personnalisé ('rewrite' => array('slug' => 'works')), utilisez-le dans home_url() au lieu du nom de type standard.
Comment supprimer.html sans casser l'indexation
Vous avez décidé de revenir à des URL propres sans extensions? Supprimer simplement .html des paramètres ne suffit pas. Les anciens liens déjà présents dans les index des moteurs de recherche deviendront des 404.
Étapes à suivre:
- Supprimez
.htmldu champ «Structure personnalisée» dans Réglages → Permaliens et enregistrez. - Supprimez le code de
functions.phpsi vous l'aviez ajouté. - Ajoutez une redirection dans
.htaccess(à la racine du site, avant le bloc# BEGIN WordPress):
1 RewriteEngine On 2 RewriteCond %{REQUEST_FILENAME} !-f 3 RewriteRule ^portfolio/(.+)\.html$ /portfolio/$1 [R=301,L]
Pour les articles et pages standards, la règle est similaire, remplacez simplement /portfolio/ par le segment nécessaire. R=301 indique aux moteurs de recherche que le déménagement est permanent: le capital de liens est transmis à la nouvelle URL.
Vérifiez le résultat: ouvrez l'ancienne adresse en .html dans un navigateur, elle doit rediriger vers la version sans l'extension. Vérifiez ensuite la Google Search Console dans quelques semaines et confirmez que le nombre de 404 indexées diminue.
Vidéo: ajouter.html en 2 minutes
Une courte démonstration des trois méthodes sur un site WordPress en direct:
⁉️🤔 FAQ
La méthode fonctionne-t-elle avec les taxonomies, les catégories et les étiquettes?
L'écran standard des permaliens ne touche pas aux taxonomies. Les catégories et les étiquettes nécessiteraient leurs propres règles de réécriture via
add_rewrite_rule()ou les fonctionnalités de Permalink Manager Pro. Mais en pratique, le.htmldans les URL de catégories est rarement utilisé: les moteurs de recherche gèrent très bien/category/seo/sans extension.
Qu'advient-il des anciens liens sans.html après avoir modifié la structure?
WordPress ne crée pas de redirection automatique des anciennes URL vers les nouvelles. Si le site est déjà indexé, après avoir modifié la structure, les anciens liens commenceront à renvoyer des 404. Solution: un plugin de redirection (par exemple, Redirection) avec suivi automatique des changements de permaliens. Il mémorise l'ancien slug et applique automatiquement une 301.
Puis-je utiliser.php,.htm ou une autre extension?
Techniquement oui, WordPress traite n'importe quelle chaîne dans le champ «Structure personnalisée». Mais du point de vue des moteurs de recherche,
.phpsemble suspect (cela révèle généralement la technologie du serveur) et.htmest un format obsolète de l'ère Windows 3.1. L'extension.htmlest neutre, familière et ne soulève aucune question de la part des utilisateurs ou des robots d'exploration.
Cela aidera-t-il lors du transfert d'un blog de Blogger vers WordPress?
Oui, c'est un scénario classique. Blogger servait par défaut des URL au format
/2024/06/post-title.html. Lors de l'importation vers WordPress via l'outil natif, la structure devient/2024/06/post-title/. L'ajout de.htmldans les paramètres de permaliens préserve la compatibilité, toutes les anciennes adresses continuent de fonctionner sans redirections manuelles.
Faut-il ajouter.html: le bilan
En bref: pour un tout nouveau projet WordPress, le .html n'est pas nécessaire. Les URL propres comme site.ru/post-name/ sont la norme que les utilisateurs et les moteurs de recherche comprennent.
Mais il existe deux scénarios où le .html est pleinement justifié: la migration depuis un site statique ou un autre CMS, et la migration depuis Blogger. Dans les deux cas, vous préservez votre classement dans les moteurs de recherche et vous vous épargnez des semaines de redirections manuelles.
La voie la plus fiable est le paramétrage natif via le panneau d'administration. Si cela ne fonctionne pas, functions.php. Pour les CPT, le filtre post_type_link. Ces trois méthodes ne nécessitent aucun plugin et n'ajoutent aucune charge au site. Et lorsque le .html n'est plus nécessaire, .htaccess avec une redirection 301 transmet proprement le capital de liens aux nouvelles URL.


