Les permaliens sont les URL permanentes des publications uniques de votre site, ainsi que des catégories et autres listes d’articles sur le blog. Un permalien est l’URL qu’un autre blogueur utilisera pour faire référence à votre article, ou comment vous pourriez envoyer un lien vers votre site dans un e-mail. Étant donné que d’autres personnes peuvent établir un lien vers vos publications uniques, ces URL ne doivent pas être modifiées.
Les permaliens sont censés être permanents (valables pour longtemps) d’où le terme permalien, mot-valise signifiant « lien permanent ».
Types de Permaliens
Sur WordPress, il existe trois types de permaliens :
Par défaut : « non-optimisés »
La valeur par défaut ressemble à :
http://example.com/?p=N
Où « N » est l’identifiant de la publication. Cela fonctionne sur tous les environnements de serveur, mais cela n’est pas aussi lisible que les autres types de permaliens.
mod_rewrite : « optimisés »
En utilisant mod_rewrite ou lighttpd, vous pouvez produire des permaliens beaucoup plus compréhensibles. Il existe de nombreux formats possibles, mais les plus communs ressemblent à ceci :
http://example.com/2012/nom-du-sujet/
ou
http://example.com/2012/12/30/nom-du-sujet
Les permaliens opimisés sont disponibles sous :
- Serveur web Apache avec le module mod_rewrite.
- Nginx utilisant try-files, par exemple selon ce tutoriel (en anglais).
- Hiawatha web server avec la prise en charge d’UrlToolkit activée.
- Lighttpd utilisant un gestionnaire 404 ou mod_rewrite.
- Caddy utilisant la réécriture, par exemple selon ce tutoriel (en anglais).
PATHINFO : « moins optimisés »
Les permaliens PATHINFO ressemblent beaucoup aux permaliens optimisés avec mod_rewrite mais à une exception près : ils ont « /index.php » inséré devant eux, comme ceci :
http://example.com/index.php/yyyy/mm/dd/nom-du-sujet/
Sinon, ils sont identiques aux permaliens optimisés avec mod_rewrite, et sont également flexibles. Tout ce que mod_rewrite peut faire, les permaliens PATHINFO peuvent le faire, avec le préfixe « /index.php ».
Choisir votre structure de permaliens
Dans l’écran Réglages > Permaliens, vous pouvez choisir l’une des structures de permaliens les plus courantes ou saisir la vôtre dans le champ Structure personnalisée à l’aide des balises disponibles.
Veuillez noter : n’insérez pas l’adresse de votre site dans le champ Structure personnalisée. N’utilisez que les balises ou une combinaison de balises parmi celles affichées.
Pour activer les permaliens PATHINFO, démarrez votre structure de permaliens avec « index.php/ ».
Balises de structure
Vous pouvez utiliser ces balises pour personnaliser vos permaliens optimisés ou moins optimisés. Quelques conseils :
- Ne mettez pas l’adresse de votre site dans les champs permaliens. N’utilisez qu’une des balises de structure ou une combinaison de balises.
- Assurez-vous de terminer votre structure avec soit « %post_id% » ou « %postname% ».
(par exemple « /%year%/%monthnum%/%day%/%postname%/ » de sorte que chaque permalien pointe vers une publication unique.
%year%
L’année de la publication à quatre chiffres, comme par exemple « 2018 ».
%monthnum%
Le numéro du mois dans l’année de la publication (n’oubliez pas le zéro pour les chiffres), comme par exemple « 05 ».
%day%
Le jour du mois, par exemple « 28 ».
%hour%
L’heure de la publication, par exemple « 15 ».
%minute%
Les minutes dans l’heure de la publication, par exemple « 43 ».
%second%
Les secondes de la minute, par exemple « 33 ».
%post_id%
L’identifiant unique (ID) de la publication, par exemple « 4231 ».
%postname%
Une version normalisée du titre de la publication (le champ Slug d’URL dans l’interface d’édition Modifier l’article / la page). Alors « C’est un excellent message ! » devient « cest-un-excellent-message » dans l’URL.
%category%
Une version normalisée du nom de la catégorie (le champ Slug dans l’écran des catégories). Les sous-catégories imbriquées apparaissent comme des répertoires imbriqués dans l’URL.
%author%
Une version normalisée du nom de l’auteur.
Préfixe des catégories et préfixe des étiquettes
Le préfixe des catégories et le préfixe des étiquettes sont utilisés pour les liens des archives par catégories ou par étiquettes. Par exemple, en utilisant sujets
comme préfixe pour vos catégories, vous obtiendrez des adresses web comme https://example.com/sujets/non-classe/
. Si vous laissez ce champ vide, la valeur par défaut sera appliquée.
Les valeurs par défaut pour ces préfixes sont « categorie » et « etiquette ». Vous pouvez les modifier, mais vous ne pouvez pas empêcher ces préfixes d’apparaître dans vos URLs.
Les permaliens personnalisés fonctionnent sur la plupart des systèmes sans aucun problème, mais sous certaines conditions des problèmes peuvent survenir.
Utilisation de %category% avec plusieurs catégories sur un article
Lorsque vous attribuez plusieurs catégories à une publication, une seule d’entre elles s’affichera dans le permalien. Les catégories sont classées par ordre alphabétique. Dans chaque groupe de sous-catégories, l’ordre sera également alphabétique (voir Écran des catégories d’article). L’article sera toujours accessible en naviguant depuis les autres catégories, comme d’habitude.
Utiliser des permaliens optimisés
Configuration requise :
- Serveur web Apache avec le module
mod_rewrite
installé. - Dans le répertoire racine de WordPress :
- L’option FollowSymLinks doit être activée.
- La directive FileInfo doit être autorisée (par ex. avec
AllowOverride FileInfo
ouAllowOverride All
). - Un fichier « .htaccess » (si ce fichier est manquant, WordPress essaiera de le créer lorsque vous activerez les permaliens optimisés).
- Si vous souhaitez que WordPress mette à jour automatiquement le fichier « .htaccess », WordPress aura besoin d’un accès en écriture au fichier.
- Pour nginx, un serveur web destiné à une concurrence élevée, des performances élevées et une faible utilisation de la mémoire, ajoutez le bloc d’emplacement suivant dans le bloc de serveur :
location / { try_files $uri $uri/ /index.php?$args; }
- Pour Hiawatha, un serveur web fortement axé sur la sécurité, utilisez la règle
UrlToolkit
suivante :
UrlToolkit {
ToolkitID = wordpress
RequestURI exists Return
Match .*\?(.*) Rewrite /index.php?$1
Match .* Rewrite /index.php
}
- Les utilisateurs Mac exécutant WordPress localement doivent éditer leur fichier « httpd.conf » en modifiant la ligne AllowOverride en AllowOverride All dans les instructions de l’environnement hôte dans le répertoire « /Library/WebServer/Documents ».
Pour Mac OS X 10.5.x et versions ultérieures, ce fichier se trouve dans « /private/etc/apache2/users/[votre-nom-utilisateur].conf », sinon il se trouve dans « /etc/httpd/httpd.conf ».
Lorsque vous créez ou mettez à jour une structure de permaliens optimisés, WordPress générera des règles de réécriture et tentera de les insérer dans le fichier « .htaccess » approprié. Si ce n’est pas le cas, il affichera quelque chose comme : « Vous devriez mettre à jour votre .htaccess maintenant et afficher les règles pour que vous puissiez les copier et les coller dans le fichier (mettez-les à la fin) ».
Vous n’aurez probablement besoin de le faire qu’une seule fois, car WordPress effectue la réécriture en interne. Si jamais vous déplacez votre répertoire d’accueil WordPress (adresse du site), vous devrez répéter cette étape.
WordPress fonctionnera bien avec un fichier « .htaccess » existant et ne supprimera aucune RewriteRules ou autres directives existantes. Si vous avez d’autres règles mod_rewrite, placez les vôtres avant celles de WordPress.
Où est mon fichier « .htaccess » ?
Les fichiers « index.php » et « .htaccess » de WordPress doivent être ensemble dans le répertoire racine indiqué par le réglage Adresse web du site (URL) dans l’écran des Réglages > Général. Puisque le nom du fichier commence par un point, le fichier peut ne pas être visible via un client FTP, sauf si vous modifiez les préférences de l’outil FTP pour forcer l’affichage de tous les fichiers, y compris les fichiers cachés.
Certains hébergeurs peuvent ne pas les afficher ou vous interdire de les modifier si vous avez installé WordPress via un outil d’installation automatique.
Création et modification du fichier .htaccess
Si vous ne disposez pas déjà d’un fichier « .htaccess », créez-en un. Si vous avez un accès shell ou ssh au serveur, une simple commande touch .htaccess
créera le fichier. Si vous utilisez un client FTP pour transférer des fichiers, créez un fichier texte sur votre ordinateur local, appelez-le par exemple « 1.htaccess », téléversez-le à la racine de votre dossier WordPress, puis renommez-le en « .htaccess ».
Vous pouvez modifier le fichier « .htaccess » via votre client FTP, votre terminal shell ou (éventuellement) le panneau de contrôle de votre hébergeur.
Le code de réécriture de permalien suivant doit être inclus dans votre fichier « .htaccess » :
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Si votre fichier « .htaccess » contient des erreurs qui font tomber votre site « Erreur interne du serveur (500) », vous devrez utiliser FTP ou le gestionnaire de fichiers dans le panneau de configuration de votre hébergeur pour supprimer le fichier « .htaccess » défectueux.
Mise à jour automatique de « .htaccess »
Si WordPress ne peut pas mettre à jour votre fichier « .htaccess » automatiquement, il vous dira quelque chose comme « Si votre fichier .htaccess était inscriptible, nous pourrions le faire automatiquement, mais il ne l’est pas… » près du bas de l’écran Réglages > Écran des permaliens.
Si vous souhaitez laisser WordPress le faire, vous devrez donner à WordPress un accès en écriture au fichier « .htaccess ». Les autorisations exactes nécessaires dépendent de la configuration de votre serveur. Essayez d’ajouter des autorisations d’écriture pour le propriétaire, puis le groupe, puis les autres, en testant après chaque modification.
Une fois que WordPress a modifié le fichier avec succès, n’ajoutez plus aucune autorisation d’écriture supplémentaire.
Après avoir enregistrés les permaliens, vous devez changer les autorisations en une permission plus forte comme 660 ou 644 pour empêcher d’autres personnes sur le serveur d’y avoir potentiellement accès.
Résolution des problèmes de permaliens
Résolution des problèmes de génération du fichier « .htaccess »
Si votre installation de WordPress ne génère pas de fichier « .htaccess » ou si elle n’écrit pas les nouvelles règles dans votre fichier « .htaccess » existant, plusieurs raisons peuvent en être la cause. Travaillez étape par étape et passez à l’étape suivante uniquement si l’étape précédente ne fonctionne pas.
- Modifier les autorisations de fichier : vous devez changer les permissions du fichier « .htaccess » à 666 pour autoriser les modifications avec l’éditeur de thèmes de WordPress, mais ce n’est pas recommandé, car si vous faites cela, tout utilisateur de votre blog, qui est autorisé à modifier les thèmes pourra le modifier. Vous pouvez modifier les autorisations en 660 pour le rendre accessible en écriture sur le serveur, ce qui aura à nouveau la même limitation.
- Blocage du serveur : votre hébergeur a peut-être bloqué la variable SERVER_SOFTWARE et cela entraînera l’échec de la génération du fichier « .htaccess » de WordPress. Si vous êtes sûr que votre serveur exécute Apache, vous pouvez forcer WordPress à croire que votre serveur exécute Apache en modifiant votre fichier « wp-includes/vars.php ».
Suivez les étapes ci-dessous pour mettre en œuvre ces modifications :- Ouvrez le fichier « wp-includes/vars.php » à l’aide de l’éditeur de fichiers intégré dans votre panneau d’administration WordPress. Pour accéder à ce panneau, connectez-vous à WordPress, cliquez sur « Gérer », puis sur « Fichiers », faites défiler vers le bas et saisissez « wp-includes/vars.php » dans la zone de texte sous le titre « Autres fichiers ». Chercher
$is_apache = strstr($_SERVER['SERVER_SOFTWARE'], 'Apache') ? 1 : 0;
et remplacez le par :// $is_apache = strstr($_SERVER['SERVER_SOFTWARE'], 'Apache') ? 1 : 0;
- Ajouter une nouvelle ligne sous :
// $is_apache = strstr($_SERVER['SERVER_SOFTWARE'], 'Apache') ? 1 : 0;
et saisissez :$is_apache = 1;
- Ouvrez le fichier « wp-includes/vars.php » à l’aide de l’éditeur de fichiers intégré dans votre panneau d’administration WordPress. Pour accéder à ce panneau, connectez-vous à WordPress, cliquez sur « Gérer », puis sur « Fichiers », faites défiler vers le bas et saisissez « wp-includes/vars.php » dans la zone de texte sous le titre « Autres fichiers ». Chercher
- XAMPP (Windows) : certaines versions de XAMPP n’activent pas mod_rewrite par défaut (bien qu’il soit compilé dans Apache). Pour l’activer – et ainsi permettre à WordPress d’écrire le fichier « .htaccess » nécessaire à la création de permaliens optimisés – vous devez ouvrir « apache/conf/httpd.conf » et dé-commenter la ligne
LoadModule rewrite_module modules/mod_rewrite.so
(c’est‑à‑dire supprimer le signe dièse en début de ligne). - WAMP (Windows) : certaines versions de WAMP (toutes les versions ?) n’activent pas mod_rewrite ou ne permettent pas de suivre les SymLinks par défaut. Pour activer la fonctionnalité requise, accédez au fichier « apache/conf/httpd.conf », ouvrez avec un éditeur de texte et dé-commentez la ligne
LoadModule rewrite_module modules/mod_rewrite.so
(c’est‑à‑dire, supprimez le signe dièse au début de la ligne).
Ensuite, plus bas dans le même fichier, il y a une section qui commence par la ligneOptions FollowSymlinks
. Modifiez la deuxième ligne de cette section deAllowOverride none
parAllowOverride all
.
Enregistrez le fichier « httpd.conf » modifié et redémarrez tous les modules WAMP. Vos permaliens devraient maintenant fonctionner.
Trucs et astuces
Éviter l’interprétation comme lien d’archive
Si vous souhaitez utiliser par exemple « %year%%monthnum%%day% », tous les articles du jour seront interprétées dans l’archive de la première publication de ce jour. Il faut au moins ajouter l’heure « %year%%monthnum%%day%%hour% » pour cibler une publication précise.
Vérifier la structure du permalien
Un moyen de vérifier la structure de permaliens paramétrée par le site est d’utiliser la condition PHP suivante :
<?php if ( get_option('permalink_structure') ) { echo 'permalinks enabled'; } ?>
Voir aussi
- Utilisateur : Lazyking / Utilisation des permaliens (serveur web Saetta) (en anglais)
- Lier les pages et les catégories d’articles (en anglais) pour savoir comment créer un lien d’un article vers un autre
Traduit par Patrice Pichon
Relu par Marie Comet, Jb Audras & Jenny Dupuy
Dernière mise à jour le 10 mars 2021