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

Les permaliens

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 la au final d’un problème apache et du mod 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é… et 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 [email protected]
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, s 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 de 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]

Commentaires

14 réponses
  1. Nam1962
    Nam1962 dit :

    J’ai eu le même problème en passant de online à planethosters et l’ai résolu plus simplement : il faut aller dans le tableau de bord wordpress, dans réglages et là il faut juste cliquer sur « enregistrer les modifications » sans rien changer.
    Si le 404 ne se reproduit pas, c’est bien qu’il faut une « mise à jour » de ce paramètre dans wordpress lors d’une migration…

  2. rodolphe_
    rodolphe_ dit :

    LE MODE REWRITE!!!! GRRRR
    Merci, je commençai à me tirer des balles, j’ai sans doute du mettre apache à jour et zapper ce module.

  3. Kelcible
    Kelcible dit :

    J’ai un problème similaire sur un hébergement free.fr. L’index s’affiche, mais pas les pages ni les articles. Lorsque je change les permaliens, le .htaccess se regénère (normal), mais j’aimerai retrouver la « valeur par défaut » de l’écriture des liens, car Free n’accepte pas les redirections htaccess. Et aujourd’hui, je ne peux plus changer sans une erreur 500 du serveur d’hébergement, la structure par défaut ne peut pas être rétablie…
    Faut-il réinstaller totalement WordPress d’après toi, ou il y a un fichier de configuration à modifier ?

  4. Agence web Kelcible
    Agence web Kelcible dit :

    Je viens de trouver la solution grâce à un collègue, le .htaccess se régénérait directement quand j’allais sur la PAGE d’options des permaliens. Donc, j’ai supprimé ce que WordPress ajoutait dans le .htaccess après le chargement de la page d’admin, puis j’ai configuré ma typologie d’URL après mise à jour, et là ca marche.

  5. utopman
    utopman dit :

    NB: pour résoudre le problème, j’ai juste du installer le module apache mod_rewrite en tapant : sudo a2enmod rewrite.
    le module n’était pas installé sur ma machine par défaut…

  6. escorte Nice
    escorte Nice dit :

    Pouvez-vous traduire et publier en ligne des articles de nouvelles de l’étranger / magazines sans craindre d’enfreindre le droit d’auteur?

  7. Emile
    Emile dit :

    Oui mais si on est sur un mutu on peut pas avoir accés à ces fichiers pour les modifier… dans ce cas… que faire que faire… j’ai toutes mes pages en 404

Les commentaires sont fermés.