htmlcss ConoHa で www あり・なし統一(正規化)が効かなくなる

2021年6月25日

ConoHa Wing を使って運用しているサイトで、.htaccess で www あり・なし統一(正規化)を設定後しばらくしてから機能しなくなり、URL によってはリダイレクトエラーになってしまう現象が発生したのでそのメモです。

原因は ConoHa Wing のコンテンツキャッシュでした。

対応策:コンテンツキャッシュを OFF にして解決

経緯

約1ヶ月前に3つのサイトを ConoHa Wing に移行して、それまで設定していた .htaccess の www あり・なし統一(正規化) をそのまま継続し、移転時に問題なく動作することを確認。

以下が .htaccess に記述した正規化の部分です。2つのサイトでは www ありに、もう1つはなしに統一する設定です。

www ありに統一

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
www なしに統一

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

例えば、https://www.example.com が正規化された URL である場合、以下のアドレスにアクセスすると全てこの URL にリダイレクトされる設定です。

  • http://www.example.com
  • https://example.com
  • http://example.com

※ConoHa の場合、SSL を設定すると自動的に https の URL へリダイレクトされるようになるので、http から https へのリダイレクトは不要です(記述するとエラーになります)。

気付いたきっかけ

Google Search Console からの「カバレッジの問題が新たに検出されました」というメールが来て、指摘された URL にアクセスすると「このページは動作していません(ERR_TOO_MANY_REDIRECTS)」と表示されリダイレクトエラーになっているのに気づきました。

また設定時には正常に動作していた www の正規化が機能しなくなっていました。

正規のページは問題なく表示されていたため、Google Search Console からのメールが来なければ気が付くのがもっと遅くなっていたか、気が付かなかった可能性があります。

リダイレクトエラーが発生した URL

例えば正規の URL が https://www.example.com だとすると、今回の場合にリダイレクトエラーになっていた URL は http://example.com という www. なし(且つSSLなし)のものでした。

本来、「www.あり」にリダイレクトされるべき URL(例 https://example.com)にアクセスすると、リダイレクトはされずそのままの URL で表示されていました。

試したこと

リダイレクトエラーなので、とりあえず、.htaccess の URL の正規化の部分を削除(コメントアウト)したところ、リダイレクトエラーの発生は回避することができました。

但し、当然ですが、「www.あり・なし」の正規化ができません。

正規化の記述に原因があるのではと、以下を試しましたが、結果は全て同じで現象は変わりませんでした。

www ありに統一

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
www ありに統一

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(example\.com)(:80)? [NC]
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [R=301,L]

ConoHa のコンテンツキャッシュを OFF に

ConoHa のサポートに問い合わせたところ、「コンテンツキャッシュのOFFや独自に導入されているキャッシュプラグインなどがございましたら設定の変更や停止などをお試しいただけますでしょうか」とのことだったので、コンテンツキャッシュを OFF にして.htaccess の URL の正規化の部分を戻したところ、正常に機能するようになりました。

コンテンツキャッシュの設定は「サイト管理」→「サイト設定」→「応用設定」から変更できます。

デフォルトは「ON(静的コンテンツのみ)」になっているので、OFF に変更します。

ConoHa のコンテンツキャッシュにご注意

今回3つのサイトの移転後、全てのサイトで同じ現象が発生していて、コンテンツキャッシュを OFF に変更したところ、全て問題が解決できました。

ConoHa Wing で、今まで正常に表示されていたものが、リダイレクトエラーになったら、コンテンツキャッシュを疑うのが良いかも知れません。

ConoHa のサポートページの「リダイレクトが繰り返されて(リダイレクトループ)しまってサイトが表示できません」に対する回答に以下のようなものがあります。

また、.htaccessの設定でも改善しない場合、弊社ご提供の機能「コンテンツキャッシュ」が
有効となっている状態でお客様のコンテンツ側でブラウザキャッシュを利用する設定にして
いる場合に発生するケースがございますため、一度コンテンツキャッシュのOFFをお試し
いただけますと幸いでございます。

ConoHa コンテンツキャッシュ関連ページ

関連ページ