簡単に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つです。変なことは何もありません...ローカルで正常に動作しています。
どうしたの?
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に変更する」ことを意味すると理解しています。
それは私の問題を修正しました。
何らかの理由で/ 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
ウェブサーバーがnginxの場合、nginxの設定ファイルを確認する必要があるかもしれません。もしあるなら
if (!-f $request_filename){
rewrite ^/(.+)$ /index.php?$1& last;
}
これらの行を次で置き換えます
try_files $uri $uri/ /index.php?$args;
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
nginx configでは、最初はこの行しかなく、同じリダイレクトの問題が発生しました:
location / {
try_files $uri /index.php$is_args$args;
}
これを追加した後、すべてがうまくいきました:
location /wp-admin/ {
index index.php;
try_files $uri $uri/ /index.php$args;
}
WPサイトで公開しようとしたときにDoSページが表示されていました。function.phpファイルの権限を600に変更すると問題が解決し、そのファイルにスクリプトを追加することで解決できるというアドバイスが見つかりましたWPヘルプページでした。回避策で公開に到達できました。エディタを開こうとしたときにDoSが残っています。
私の場合、それはApacheのDirectoryIndex
問題でした。 wp-admin
はwp-admin/index.php
によってアクセスされていましたが、wp-admin
ではアクセスされず、ERR_TOO_MANY_REDIRECTS
が表示されていました。
ApacheのDirectoryIndex
が「正しく」設定されていないようです。 .htaccess
ファイルの上部でこれをリセットしてみてください:
DirectoryIndex index.php
ここで完全な回答を参照してください。 / index.phpがないとwp-adminで管理ダッシュボードにアクセスできません
WP Migrate DB。で作成されたdbスクリプトを復元したことが原因である場合もありました。このスクリプトには、「## DEV URL ##」のようなマージタグがありました。 mysqlでスクリプトを実行し、wp-config.phpを正しいデータベースにポイントする前に修正する必要があります。
行を削除するには
define('DOMAIN_CURRENT_SITE', 'www.sitename.de');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
wp-config.php
からの仕事をする必要があります。
これらのラインはマルチには必要ありません
サイトが有効なフォルダーで、サイトの構成を編集し、マルチサイトリダイレクトルールを追加する必要があります。 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;
}
リダイレクトをフラッシュする必要がありました。私は管理者にアクセスできなかったので、これをfunctions.phpファイルの先頭に追加しました:
flush_rewrite_rules(); exit;
保存してサイトを更新しました。次にfunctions.phpファイルからコードを削除し、再度更新します。それは私のためにそれをしました。
また、パーマリンクを保存し直すのも良い方法だと思います。
PS。/loginにリダイレクトされていたので、主な問題はtheme-my-loginにあると思います。