J’ai déjà rencontré ce cas de figure plusieurs fois, et à chaque fois je perds un temps précieux pour retrouver l’astuce : la configuration par défaut d’Apache sur Debian 8 et de WordPress ne permettent pas de faire fonctionner les permaliens.

Les permaliens sous WordPress

Les permaliens sont des liens lisibles par l’être humain et dont l’URL est issue du titre des pages, articles et catégories vers lesquels ils pointent. Ils ont différents avantages en termes d’ergonomie et référencement, et on les active via le menu Réglages > Permaliens.

Réglage des permaliens dans WordPress

Réglage des permaliens dans WordPress

L’activation des permaliens sur un réglage autre que « par défaut » a pour conséquence de créer la règle suivante dans .htaccess.

Cette règle permet de rediriger tout le contenu vers index.php qui déchiffrera quelle page doit être associée à quelle URL, sauf les fichiers et répertoires existants qui restent accessibles à leur URL naturelle.

 

Configuration sur Apache

Là où le bat blesse, c’est que la directive RewriteEngine n’est pas toujours autorisée dans le fichier de configuration d’Apache.

En effet, dans le fichier /etc/apache2/apache2.conf on trouve :

La ligne AllowOverride None est ici commentée, et sa valeur est probablement « None » par défaut. Cela signifie qu’un fichier .htaccess n’a pas le droit de modifier certains réglages apache.

On peut s’en sortir en modifiant cette ligne qui prend effet sur l’ensemble du serveur web. On peut aussi ajouter une ligne AllowOverride uniquement dans la configuration du site en question dans /etc/apache2/sites-enabled/mon-site . Voici un exemple de configuration minimal.

Comme alternative possible, et sans autoriser les fichiers .htaccess à outrepasser la configuration par défaut du serveur web, on peut inclure la configuration .htaccess générée par WordPress entre les balises de configuration <Directory>.