web-dev-qa-db-ja.com

wp-adminまたはwp-login.phpのリダイレクトループ

簡単にWordPressサイトをローカルでMAMPを使用して作成し、それをSVNリポジトリにチェックインしました。次に、開発サーバーにチェックアウトしました。

サーバー上のデータベース内のサイトのURLを更新するために相互接続から 検索と置換ツール スクリプトを実行する以外は何も変更しませんでした。

最初に、500サーバーエラーが発生しました。ログを確認したところ、この「SoftException」はindex.phpはグループごとに書き込み可能でした-権限は664でした。問題ありません-権限を644に変更すると、並べ替えられます。だから今、フロントサイドは働いていました。

しかし、奇妙なことに、サイトの管理者側は機能しませんでした。すべてのブラウザで無限のリダイレクトループが生成されました。

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

ローカル開発バージョン以降、何も変更されていません。 htaccessファイルは標準的なWordPress 1つです。変なことは何もありません...ローカルで正常に動作しています。

どうしたの?

5
raffjones

wp-login.phpの権限を確認したところ、それらも何らかの方法で664に設定されていることがわかりました。これは、index.phpが失敗し、500サーバーエラーが発生したのと同じ権限です。

wp-login.phpのアクセス許可を644に変更しましたが、WordPressログインページが表示されました。

しかし、ログインすると、別のリダイレクトループが発生します。したがって、もう一度、/wp-admin/index.phpを見ると、権限は644ではなく664でした。

それらを修正すると、次のファイルで問題が発生しました-ダッシュボードは混乱しています。 664から644に1つずつ変更して、問題を修正しました(/wp-admin/load-scripts.php、/wp-admin/load-styles.php)。

そのため、権限を再帰的に変更することが、問題を解決する唯一の方法であることが明らかになりました。

私のUNIXは一流ではありませんが、これは機能しているようです(Mac OS Xターミナルから実行)。このWPインストールのルートディレクトリから実行しました。

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

より良いコマンドがあるかもしれませんが、これは「664のアクセス許可を持つすべてのファイルを見つけて、それらを644に変更する」ことを意味すると理解しています。

それは私の問題を修正しました。

8
raffjones

何らかの理由で/ wp-admin /パスはリダイレクトループを引き起こしますが、/ wp-admin/index.phpはそうしません。そのため、.htaccessを使用して/ wp-admin /パスを/wp-admin/index.phpにリダイレクトするには、次の行を.htaccessファイルの "RewriteBase /"行の後に追加します。

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

それは私のようにうまくいきました。最終的な.htaccessはおそらく次のようになります。

# 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
10
GandalfTheWhite

ウェブサーバーがnginxの場合、nginxの設定ファイルを確認する必要があるかもしれません。もしあるなら

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

これらの行を次で置き換えます

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

参照 Nginx PitfallsnginxのWordPress wikiページ

5
oli

Cloudflareを使用している場合は、これをwp-config.phpファイルのTOPに追加してみてください。

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';
}

それをwp-config.phpファイルの先頭に追加することが重要です。そうしないと、「申し訳ありませんが、このページへのアクセスは許可されていません」というエラーメッセージが表示されます。

クレジット: https://www.meltajon.com/dev/wordpress-wp-admin-redirect-loop-with-cloudflare-ssl

4
Caedmon

nginx configでは、最初はこの行しかなく、同じリダイレクトの問題が発生しました:

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

これを追加した後、すべてがうまくいきました:

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

WPサイトで公開しようとしたときにDoSページが表示されていました。function.phpファイルの権限を600に変更すると問題が解決し、そのファイルにスクリプトを追加することで解決できるというアドバイスが見つかりましたWPヘルプページでした。回避策で公開に到達できました。エディタを開こうとしたときにDoSが残っています。

1

私の場合、それはApacheのDirectoryIndex問題でした。 wp-adminwp-admin/index.phpによってアクセスされていましたが、wp-adminではアクセスされず、ERR_TOO_MANY_REDIRECTSが表示されていました。

ApacheのDirectoryIndexが「正しく」設定されていないようです。 .htaccessファイルの上部でこれをリセットしてみてください:

DirectoryIndex index.php

ここで完全な回答を参照してください。 / index.phpがないとwp-adminで管理ダッシュボードにアクセスできません

0

WP Migrate DB。で作成されたdbスクリプトを復元したことが原因である場合もありました。このスクリプトには、「## DEV URL ##」のようなマージタグがありました。 mysqlでスクリプトを実行し、wp-config.phpを正しいデータベースにポイントする前に修正する必要があります。

0
John

行を削除するには

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

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

wp-config.phpからの仕事をする必要があります。

これらのラインはマルチには必要ありません

0
frieder

サイトが有効なフォルダーで、サイトの構成を編集し、マルチサイトリダイレクトルールを追加する必要があります。 Ubuntu 14.04の場合、パスは/ etc/nginx/sites-availableの下にあります

サーバーブロックに次のブロックを追加すると、無限リダイレクトループを回避できるはずです。

#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

リダイレクトをフラッシュする必要がありました。私は管理者にアクセスできなかったので、これをfunctions.phpファイルの先頭に追加しました:

flush_rewrite_rules(); exit;

保存してサイトを更新しました。次にfunctions.phpファイルからコードを削除し、再度更新します。それは私のためにそれをしました。

また、パーマリンクを保存し直すのも良い方法だと思います。

PS。/loginにリダイレクトされていたので、主な問題はtheme-my-loginにあると思います。

0
ggedde