Les permaliens

WordPress permaliens /%postname%/ 404 mais pas avec index.php (changement de serveur)

Après avoir terminé la migration du site et du blog sur le VPS de chez OVH, un petit problème est survenu sur lequel j’ai passé énormément de temps avant de trouver la solution. Il s’agissait en effet d’un problème permaliens WordPress avec erreur 404.

Les permaliens qui utilisent la syntaxe /%postname%/ sur le serveur mutualisé de chez OVH fonctionnaient parfaitement. Cependant, après la mise à jour vers le VPS, les permaliens ne fonctionnaient plus de cette façon. Certainement un problème de permaliens WordPress 404.

Les permaliens fonctionnaient avec la syntaxe suivante :

[emaillocker id=11971]

  • /blog/?p=123
  • /blog/index.php/nom-du-post

Mais plus du style

  • /blog/nom-du-post

Il s’agit là au final d’un problème apache et du mode rewrite …

Pour résoudre un problème de permaliens WordPress, vérifiez avant tout avec un phpinfo() que votre mode rewrite est activé.

Si le mode rewrite est bien activé… eh bien il ne l’est certainement pas totalement ! L’erreur WordPress permalink 404 peut se montrer capricieuse.

Voici la solution :

Ouvrez le fichier suivant :

/etc/apache2/sites-available/default (avec nano : nano /etc/apache2/sites-availables/default

Repérez les lignes suivantes :

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

Remplacez le None par all
Cela nous donne :

[shell]
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory « /usr/lib/cgi-bin »>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined

Alias /doc/ « /usr/share/doc/ »
<Directory « /usr/share/doc/ »>
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
[/shell]

Enfin, redémarrez Apache(/etc/init.d/apache2 restart)

NORMALEMENT, les permaliens de WordPress fonctionnent maintenant correctement. (Sur WordPress, choisir pour la syntaxe : /%postname%/)

Pour être sûr d’avoir réglé votre souci, à savoir, que les permaliens de WordPress ne fonctionnent pas,  vous devez avoir dans le fichier .htaccess :

[shell]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
[/shell]

Remplacez blog par le nom de votre répertoire WordPress, si c’est installé à la racine, mettre / et /index.php [L]

Et voilà, c’est terminé 😉

Vous voyez, mieux vaut ne pas s’affoler quand une page WordPress est introuvable ou qu’un permalien WordPress  affiche une erreur 404.

Article à lire absolument : Découvrez quel URL se positionne le mieux sur Google !

[/emaillocker]

Chombeau Alexandre

Expert en acquisition de trafic et en stratégie digitale, appelez moi au 03 66 72 14 71 afin que l'on discute ensemble de votre projet. Cliquez ICI pour une consultation de 15 minutes offertes.
14 réponses

    Les commentaires sont fermés.