ひやひやしますよね、リダイレクトループ。
どういった状態かというと、、
ブラウザ上に、
「このウェブページにはリダイレクトループが含まれています」
とかなんとか出て、まったくサイトが表示されないことです。。
わたしがよく遭遇するのはSSL絡みです。
先日も下層ページがリダイレクトループを起こしていた記事を書いたんですが、
さくらサーバーのwordpressでSSL化プラグインが使えない
今回は管理画面すら表示されないという恐ろしいことが起こりました。。
状況としては
サーバー:さくら
ドメイン:ルートに設定、すでにSSL化された状態
wordpress:ルートに設置したディレクトリ内にインストール
で、まず、ディレクトリにwordpressインストールした時点でリダイレクトループ
管理画面にもたどりつけず、、
グーグル先生にお聞きしたところ、こちらのサイトを見つけました!
SSL強制による無限リダイレクトが発生した場合の対処法
まったくこの記事のとおり、.htaccessに下記を記述。
RewriteEngine On RewriteCond %{ENV:HTTPS} !^on$ RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$ RewriteCond %{REMOTE_ADDR} !=サーバーのIPアドレス RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
このおかげで一旦はリダイレクトループが解消されてインストールもできたんですが、
サイトをひととおり構築した後、
wordpressのインストール場所がルート内のディレクトリだったので
ドメインが指定されているルートで表示されるように、
まずwordpress管理画面でサイト URLを「https://example.com/ディレクトリ名」から「https://example.com」に変更
そしてwordpress内のindex.phpと.htaccessをコピーして、index.phpの
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
を
require( dirname( __FILE__ ) . '/wordpress/wp-blog-header.php' );
に変更。(wordpressはwordpressがインストールされているディレクトリ名)
変更したindex.phpと.htaccessをルートに保存。
そしたら、、、リダイレクトループ!!!!
おわった!!!!
でもでも、.htaccessの記載に余分なものがあったようで、、
まずルートにコピーした.htaccessは必要最低限な下記の記述
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
だけ残してほかは削除。
そしてwordpressディレクトリ内の.htaccessは
RewriteEngine On RewriteCond %{ENV:HTTPS} !^on$ RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$ RewriteCond %{REMOTE_ADDR} !=サーバーのIPアドレス RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
と、先に追記したリダイレクトループ回避のための記述と、
必要最低限な記述だけに。
そしたらリダイレクトループ解消されました!
.htaccessちゃんと勉強しなきゃ、、がんばります。