Aller au contenu
🛠 Comment ajouter l'extension .html aux URLs WordPress

🛠 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 .html via 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 .html sans 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 */
6add_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 */
5function 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}
11add_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 .html du champ «Structure personnalisée» dans Réglages → Permaliens et enregistrez.
  • Supprimez le code de functions.php si vous l'aviez ajouté.
  • Ajoutez une redirection dans .htaccess (à la racine du site, avant le bloc # BEGIN WordPress):
1RewriteEngine On
2RewriteCond %{REQUEST_FILENAME} !-f
3RewriteRule ^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 .html dans 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, .php semble suspect (cela révèle généralement la technologie du serveur) et .htm est un format obsolète de l'ère Windows 3.1. L'extension .html est 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 .html dans 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.