中小機構の経営相談窓口で「WordPressで構築されているサイトが突然トップページしか表示されなくなってしまった」という不具合の相談がありました。確認してみると確かにそのとおりで、どの内部ページやリンクをURLで表示させようとしてもトップページしか開きません。404エラー表示ではないので、なんらかのリダイレクト処理が働いてトップページを表示させているような挙動です。
この不具合解決がなかなかやっかいでしたので、備忘録をかねて紹介しておきます。
ワードプレスの不具合
起きている問題はトップページしか表示されないこと
起きている現象は、そのサイトのどのページを表示させようとしてもトップページしか表示されないことです。内部のページを見ることがまったくできません。404エラーの表示もなく、ブラウザのアドレス欄もトップページが表示されているのでなんらかのリダイレクト処理が働いているようです。
この問題がみつかったのは6月29日だということでした。サーバの状況をファイルマネージャで調べてみると、6月29日に更新されているファイルやフォルダがいくつかありました。ほとんどがWordPress関連のアップデートで、とくに複数のプラグインが更新されていました。
この直後からトップページしか表示されないという現象が起きたようです。
なお、レンタルサーバはさくらインターネットでperlもPHPも適正バージョンで、WordPressのバージョンは最新バージョンになっていました。
想定される原因
見かけ上の問題があまり見当たらない状況なので、原因追求が難しかったです。
このように突然トップページが見られなくなるという不具合が起きた原因を想定すると以下のような項目があげられます。
・「.htaccess」の設定に不具合がある
・WordPressのindex.phpやwp-config.phpなどファイル記述に問題がある
・SSL設定のプラグインが不具合を起こしている
・リダイレクションなど301リダイレクトを行うプラグインになんらかの不具合がある
・その他のWordPressのプラグインになんからの不具合がある
・さくらインターネットのサーバ設定になんらかの不具合がある
・上記の要素の複合的な組み合わせで不具合がおきた
この手の問題はほとんどが「.htaccess」の内容に原因があることが多いです。
今回は、上記の複合的な要因の組み合わせで起きた不具合でした
原因はやはり「.htaccess」にありました
主要な原因はやはり「.htaccess」でした。
ただし、今回は「.htaccess」は5年前の2017年のタイムスタンプのままで、今回の各種ファイルのアップデートでは更新されていませんでした。
では、なぜこれまで正常に稼働していた「.htaccess」が突然に不具合の原因になったのか。これが問題ですね。
実は、この設定をした2017年当時のさくらインターネットでは、SSL表示をするための設定が特殊でした。SSL表示をするための専用のプラグインを使ったり、「.htaccess」を改変したりして、SSLで独自ドメインの表示をしていました。
その「.htaccess」はこれです。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://*******.co.jp/$1 [R=301,L] </IfModule># BEGIN WordPress
# “BEGIN WordPress” から “END WordPress” までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase /
RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] </IfModule># END WordPress
上記の https://*******.co.jp の部分は独自ドメインになっています。
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://*******.co.jp/$1 [R=301,L]
という部分は、SSL表示(https)を確実に行うために記述されていましたが、どうもこれがすべてのページをトップページにリライトしてしまうような挙動になってしまったようです。
特殊な設定はX-Sakura-Forwarded-For
X-Sakura-Forwarded-Forという環境変数は、他のレンタルサーバではあまり見慣れない特殊な記述方法です。この記述方法が根本的な不具合を起こす要因をはらんでいたのでしょうね。2017年当時はこのような記述をすることで無理やりSSL表示をしていたようです。
これまでは、他のプラグインとかサーバ設定とかの、合わせ技で稼働していたのでしょうが、今回のアップデートでその合わせ技が効かなくなって、不具合が前面にでてきたのではないかと思われます。
対策は「.htaccess」と「さくらインターネットのドメイン設定」を見直しすること
「.htaccess」を以下のように修正しました。
# BEGIN WordPress
# “BEGIN WordPress” から “END WordPress” までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase /
RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] </IfModule># END WordPress
要は、
特殊な設定であるX-Sakura-Forwarded-Forに関連する部分を削除したわけです。
特殊な設定X-Sakura-Forwarded-Forの部分を削除
具体的には
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://*******.co.jp/$1 [R=301,L] </IfModule>
という部分をまるごと削除しました。
この処理で表示の不具合はなくなりました。
しかし、SSLである「https」のページにリダイレクトさせるという処理ができなくなっています。
そこで、SSLのみを表示するための別の方法を実施します。
さくらインターネットのドメイン設定を見直す
そして、さくらインターネットのサーバーコントロールパネルで、https転送とwww転送の設定を以下のように修正しました。
HTTPS転送設定 → HTTPSに転送する
www.転送設定 → ******.co.jp に転送する
ということですね。
この2つの処理を行うことで不具合が解消しました。
まとめ
今回の不具合の原因は、これまでなんとか稼働していた「.htaccess」に問題がはらんでいました。
X-Sakura-Forwarded-Forという環境変数は、さくらインターネット独自の設定仕様のようで、今でもこの記述をしていると問題が表面化して同様の症状をひき起こす可能性があります。
このような独自の呪文のような設定は経年変化であとあと不具合が表面化することがあるということです。要注意ですね。
同様の設定をしているサイトは「.htaccess」を見直したほうがいいかもしれません。
この記事を書いた遠田幹雄は中小企業診断士です
遠田幹雄は経営コンサルティング企業の株式会社ドモドモコーポレーション代表取締役。石川県かほく市に本社があり金沢市を中心とした北陸三県を主な活動エリアとする経営コンサルタントです。
小規模事業者や中小企業を対象として、経営戦略立案とその後の実行支援、商品開発、販路拡大、マーケティング、ブランド構築等に係る総合的なコンサルティング活動を展開しています。実際にはWEBマーケティングやIT系のご依頼が多いです。
民民での直接契約を中心としていますが、商工三団体などの支援機関が主催するセミナー講師を年間数十回担当したり、支援機関の専門家派遣や中小企業基盤整備機構の経営窓口相談に対応したりもしています。
保有資格:中小企業診断士、情報処理技術者など
会社概要およびプロフィールは株式会社ドモドモコーポレーションの会社案内にて紹介していますので興味ある方はご覧ください。
お問い合わせは電話ではなくお問い合わせフォームからメールにておねがいします。新規の電話番号からの電話は受信しないことにしていますのでご了承ください。
【反応していただけると喜びます(笑)】
記事内容が役にたったとか共感したとかで、なにか反応をしたいという場合はTwitterやフェイスブックなどのSNSで反応いただけるとうれしいです。
遠田幹雄が利用しているSNSは以下のとおりです。
facebook https://www.facebook.com/tohdamikio
ツイッター https://twitter.com/tohdamikio
LINE https://lin.ee/igN7saM
チャットワーク https://www.chatwork.com/tohda
また、投げ銭システムも用意しましたのでお気持ちがあればクレジット決済などでもお支払いいただけます。
※投げ銭はデジタルコンテンツ購入という通販のしくみにしました。
※投げ銭は100円からOKです。シャレですので笑ってください(笑)