web-dev-qa-db-fra.com

Boucle de redirection sur wp-admin ou wp-login.php

J'ai mis en place un site WordPress rapide localement à l'aide de MAMP, puis l'ai archivé dans un dépôt SVN. Je l'ai ensuite vérifié sur mon serveur de développement.

Je n'ai rien changé sauf pour exécuter l'outil rechercher et remplacer l'outil script d'Interconnectit afin de mettre à jour l'URL du site dans la base de données sur le serveur.

Au départ, j'ai eu une erreur de 500 serveur. En vérifiant les journaux, j'ai découvert que cette "exception SoftException" était due au fait que index.php était accessible en écriture pour un groupe - les autorisations étaient de 664. Aucun problème - un changement rapide d'autorisations en 644 trié. Alors maintenant, le frontside travaillait.

Cependant, étrangement, le côté administrateur du site ne fonctionnait pas. Il vient de produire une boucle de redirection sans fin dans tous les navigateurs.

Error 310 (net::ERR_TOO_MANY_REDIRECTS): There were too many redirects.

Rien n'a changé depuis la version de développement local. Le fichier htaccess est juste un fichier WordPress standard. Rien de bizarre ... fonctionne toujours bien localement.

Alors que se passe-t-il?

4
raffjones

La vérification des autorisations de wp-login.php a révélé qu’elles avaient également été définies sur 664 - les mêmes autorisations qui ont provoqué l’échec de index.php et provoqué l’erreur 500 server.

J'ai changé les permissions de wp-login.php en 644 et hop, la page de connexion WordPress est apparue.

Mais lors de la connexion, une autre boucle de redirection. Donc, encore une fois, en regardant /wp-admin/index.php, les autorisations étaient 664 plutôt que 644.

Les résoudre a entraîné des problèmes avec les fichiers suivants en ligne - le tableau de bord était un vrai bordel. Un par un, en passant de 664 à 644, nous avons corrigé les problèmes (/wp-admin/load-scripts.php, /wp-admin/load-styles.php).

Il est donc devenu évident qu'un changement récursif d'autorisations était le seul moyen de résoudre le problème.

Mon système UNIX n’est pas vraiment de premier ordre, mais cela semble avoir fonctionné (fonctionnant à partir d’un terminal Mac OS X). Je l'ai exécuté à partir du répertoire racine de cette installation WP.

find . -type f -perm 664 -print -exec chmod 644 {} \;

Il y a peut-être une meilleure commande, mais je comprends que cela signifie "trouver tous les fichiers avec les autorisations 664 et les changer en 644".

Cela a résolu mon problème.

8
raffjones

Pour une raison quelconque,/wp-admin/path provoque une boucle de redirection, mais pas /wp-admin/index.php. En tant que tel, nous pouvons utiliser .htaccess pour rediriger le chemin/wp-admin/vers /wp-admin/index.php en ajoutant la ligne suivante à votre fichier .htaccess après la ligne "RewriteBase /" comme ceci:

RewriteBase /
RewriteRule  /wp-admin/ /wp-admin/index\.php [L,P]

Cela a fonctionné pour moi comme ça. Votre dernier fichier .htaccess ressemblerait probablement à ceci:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule  /wp-admin/ /wp-admin/index\.php [L,P]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
8
GandalfTheWhite

si votre serveur Web est nginx, vous devrez peut-être consulter le fichier de configuration de votre nginx. S'il y a

if (!-f $request_filename){
    rewrite ^/(.+)$ /index.php?$1& last;
}

Remplacez ces lignes par

try_files $uri $uri/ /index.php?$args;

Voir aussi Les pièges de Nginx , La page wiki de WordPress sur nginx

5
oli

avec nginx config, je n'avais à l'origine que cette ligne et le même problème de redirection:

location / {
    try_files   $uri /index.php$is_args$args;
}

après avoir ajouté cela, tout allait bien:

location /wp-admin/ {
    index index.php;
    try_files $uri $uri/ /index.php$args;
}
3
mal

J'avais des pages DoS lorsque j'essayais de publier sur mon site WP. J'ai trouvé le conseil que changer les autorisations dans le fichier function.php à 600 pourrait résoudre le problème, également pour ajouter à ce fichier un extrait de script. C’était une WP page d’aide. J'ai pu accéder à l'édition de manière détournée. J'ai toujours le DoS quand j'essaie d'ouvrir l'éditeur.

1
Shoshana Werbner

J'ai eu un problème similaire dans mon cas, il était dû à la restauration d'un script de base de données créé avec WP Migrate DB. Le script comportait des balises de fusion telles que "## DEV URL ##" que je devais corriger avant d'exécuter le script sur mysql et de pointer le fichier wp-config.php vers la base de données appropriée.

0
John

Enlever les lignes

define('DOMAIN_CURRENT_SITE', 'www.sitename.de');

define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

de wp-config.php devrait faire le travail.

Ces lignes ne sont pas nécessaires pour un multi

0
frieder

Dans le dossier adapté aux sites, vous devez modifier la configuration de votre site et ajouter les règles de redirection multisite. Pour Ubuntu 14.04, vous pourrez trouver le chemin sous/etc/nginx/sites-available

Ajoutez le bloc suivant dans votre bloc serveur et vous devriez pouvoir éviter la boucle de redirection infinie.

#Rewrite multisite '.../wp-.*' and '.../*.php'.
if (!-e $request_filename) {
    rewrite /wp-admin$ $scheme://$Host$uri/ permanent;
    rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
    rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
}
0
Basil Abbas

Si vous utilisez Cloudflare, essayez d’ajouter ceci au TOP de votre fichier wp-config.php:

define('WP_SITEURL', 'https://www.example.com');
define('WP_HOME', 'https://www.example.com');
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
if(isset($_SERVER['HTTP_CF_VISITOR']) && strpos($_SERVER['HTTP_CF_VISITOR'], 'https')){
  $_SERVER['HTTPS']='on';
}

Il est important que vous l'ajoutiez en haut du fichier wp-config.php, sinon vous obtiendrez le message d'erreur "Désolé, vous n'êtes pas autorisé à accéder à cette page".

Crédit: https://www.meltajon.com/dev/wordpress-wp-admin-redirect-loop-with-cloudflare-ssl

0
Caedmon

Je viens de vider mes redirections. Comme je ne pouvais pas accéder à l'administrateur, j'ai ajouté ceci au sommet de mon fichier functions.php:

flush_rewrite_rules(); exit;

Enregistré et actualisé mon site. Supprimez ensuite le code de votre fichier functions.php, puis actualisez à nouveau. Cela l'a fait pour moi.

Je pense aussi que ce serait une bonne mesure de réenregistrer vos permaliens.

PS Je pense que le problème principal est venu de theme-my-login car il redirigeait vers/login.

0
GGedde