Wordpress - redirect loop error

undraw_warning_cyit

Cette erreur signifie tout bêtement que la page principal du site wordpress n'arrive pas à s'afficher suite à une boucle illimité que subit le serveur web.

Les causes de cette erreur sont multiples:

  • Les cookies en cache du navigateur
  • Une modification des droits sur les fichiers de wordpress
  • Un changement de nom de domaine
  • La mise en place d'un proxy en frontal du site wordpress


Les cookies du navigateur

Dans un premier temps, il faudrait s'assurer que l'erreur est bien généralisé à tout les utilisateurs et non pas seulement à vous mêmes. Pour ce faire, l'opération sera toute simple, il faudra purger les cookies de votre navigateur.

Les modifications des droits Linux

Si vous avez récemment joué avec du chmod ou du chown sur votre serveur linux hébergeant l'application wordpress, il faudra s'assurer que les droits n'ont pas sauté. Dans un premier temps replacer en owner des fichiers le compte executant votre serveur web.


# Afin de retrouver le compte qui execute le serveur web:
# Dans le cas d'un apache
ps -def | grep httpd
# Dans le cas d'un nginx
ps -def | grep nginx

Ensuite positionner vous dans le répertoire courant de wordpress et enfin appliquer le owner du serveur web à l'ensemble des fichiers


cd /var/www/html
chown www-data: -R *

Par la suite, nous allons réappliquer les droits correctement


cd /var/www/html
chmod 644 -R *
chmod 755 -R wp-admin
chmod 755 -R wp-includes
chmod 755 wp-content

Changement de domaine

Si vous êtes en cours de migration de domaine, l'erreur vient du fait que les permalink pointent toujours vers l'ancien nom de domaine. La solution la plus simple pour réactiver le site internet, et de définir le nouveau nom de domaine dans le fichier wp-config.php. Pour ce faire, il faudra simplement editer le fichier wp-config.php et enfin y ajouter quelques lignes:


cd /var/www/html
vi wp-config.php

Ajouter les lignes suivantes avant la ligne "require_once(ABSPATH . 'wp-settings.php');" N'oubliez pas de remplacer mon nom de domaine par le votre.


define( 'WP_HOME', 'https://www.arnaudallouche.fr' );
define( 'WP_SITEURL', 'https://www.arnaudallouche.fr' );

Wordpress derrière un proxy

Lorsque wordpress se cache derrière un proxy et que le certificat SSL est porté par le proxy (ce qui signifie que nous sommes en http non secure entre le proxy et le serveur web), les permalinks s'arrêtent de fonctionner. Afin de résoudre ce problème, il faudra tout simplement éditer le fichier wp-config.php en y ajoutant quelques lignes avant:


require_once(ABSPATH . 'wp-settings.php');

Ajouter avant:


define ( 'FORCE_SSL_ADMIN' , true);

if ( (!empty( $_SERVER['HTTP_X_FORWARDED_HOST'])) || (!empty( $_SERVER['HTTP_X_FORWARDED_FOR'])) ) {
    $_SERVER['HTTPS'] = 'on';
}