前提・実現したいこと
さくらインターネットのレンタルサーバーで管理しているシリウスで作ったサイトが、2019年3月31日夕方以降(日本時間)突然閲覧できなくなりました。その日の昼ごろまでは全く問題なく閲覧できており、夕方にアナリティクスを見たところ、訪問者数が0になっていたことで気づきました。
PCやiPhoneからIEやChromeで試しても閲覧できず「このページは動作していません リダイレクトが繰り返し行われました。」と表示されます。そこで、対策が載っているウェブサイトを参考にcookieを消去してみても改善されません。
なお、さくらインターネットで2018年10月頃にこちらのサイトを参考に無料SSL化を実施しており、その時から2019年3月31日昼頃までは問題なくhttpからhttpsへ正常にリダイレクトされており、サイトも閲覧できておりました。また、少なくとも今年に入ってからは全く触っておらず、何か特別な設定や変更をしたこともないので、リダイレクトループがなぜ起きたか原因が分かりません。
過去にシリウスやさくらインターネット内の.htaccessは触ったことがなく、何も記述したことはございません。
ちなみに元からあった.htaccessの記述はこちらになります。
さくらインターネットのファイルマネージャー内の.htaccessの記述
<ifModule mod_headers.c> Header set Vary User-Agent </ifModule> RewriteEngine Off RewriteEngine On RewriteBase / SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1 <IfModule mod_rewrite.c> RewriteCond %{HTTP_HOST} ^(www.サイトのURL.com)$ [NC] RewriteRule (.*) https://サイトのURL.com%{REQUEST_URI} [R=301,L] RewriteCond %{ENV:HTTPS} !on RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule> RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android.*Mobile|Windows.*Phone|BlackBerry) RewriteRule ^$ iphone/redirect.php?f=index.html [L] RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android.*Mobile|Windows.*Phone|BlackBerry) RewriteRule ^(.*).html iphone/redirect.php?f=$1.html [L] RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android.*Mobile|Windows.*Phone|BlackBerry) RewriteRule ^(.*).css iphone/$1.css [L] RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android.*Mobile|Windows.*Phone|BlackBerry) RewriteRule ^img/(.*) iphone/img/$1 [L] RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android.*Mobile|Windows.*Phone|BlackBerry) RewriteRule ^(.*)/ iphone/redirect.php?f=$1/index.html [L] RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android.*Mobile|Windows.*Phone|BlackBerry) RewriteRule ^(.*) iphone/$1 [L] RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|UP.Browser|J-PHONE|Vodafone|SoftBank) RewriteRule ^$ m/redirect.php?f=index.html [L] RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|UP.Browser|J-PHONE|Vodafone|SoftBank) RewriteRule ^(.*).html m/redirect.php?f=$1.html [L] RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|UP.Browser|J-PHONE|Vodafone|SoftBank) RewriteRule ^img/(.*) m/img/$1 [L] RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|UP.Browser|J-PHONE|Vodafone|SoftBank) RewriteRule ^(.*)/ m/redirect.php?f=$1/index.html [L]
また、ローカル環境では閲覧可能です。(シリウス内のプレビューだとサイトが確認できます)
どうにかこの状況を脱して、今まで通り問題なくウェブサイトを閲覧できるようにしたいと思っておりますので、ご教示いただけますと幸いです。何卒宜しくお願い申し上げます。
発生している問題・エラーメッセージ
トップページをChromeのRedirect Pathで調べてみると、https://〇〇→https://〇〇→・・・と、httpsで始まる同じURLから同じURLにリダイレクトされており、リダイレクトループが発生していると考えております。
トップページ以外の主要なページ(おそらく全ページ)も同様の結果でした。
ERR_TOO_MANY_REDIRECTS
試したこと
・cookieの削除→×
・さくらインターネットに上記内容をメールで問い合わせ→「ページの自動転送設定が正しくないため、.htaccessの記述を見直ししていただければと存じます。」とだけ返答され×
・シリウス側の設定(サイトURLがhttpsになっているか)を確認→×問題なし、そもそも触っていない。
・シリウスのバックアップデータをアップロードしてみる→×
・カノニカルタグ内のURLもhttpsになっていることを確認。
・シリウス側の.htacceesにこちらのサイトやこちらのサイトに載っていた以下のコードを記載→×
RewriteEngine On RewriteCond %{REQUEST_URI} !^/robots.txt$ RewriteCond %{REQUEST_FILENAME} !404error.html$ RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteCond %{ENV:HTTPS} !^on$ RewriteCond %{HTTP:X-SAKURA-FORWARDED-FOR} ^$ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{ENV:HTTPS} !on RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>
・さくらインターネットのファイルマネージャー内の.htacceesにも上記コードを記載→×
追記:2019年4月7日現在の状況
アドバイスいただいた内容を参考にして、下記サイトを見て試行錯誤してみましたが、未だにリダイレクトループから抜け出せておりません。https://engineer-milione.com/create/sakura-htaccess.html
やったこと
SSLを使用してwwwなしで統一したいため、さくらサーバーで使用していたドメインの「〇〇.com」に加えて「www. 〇〇.com」を新たに登録し、両方とも「wwwを付与せずマルチドメインとして使用する(上級者向け)」、と「SNI SSLを利用する」を選択してSSL証明書を設定しました。
その後ファイルマネージャーにアクセスし、/home/ユーザー名/wwwの下の「〇〇.com」の中にある既存の.htaccessの上部に下記コードを追記しました。
SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{ENV:HTTPS} !on RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>
また、「www.〇〇.com」という新しいフォルダを作り、/home/ユーザー名/wwwの下に設置し、その中.htaccessファイルを置いて下記コードを記述しました。
SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^www.〇〇.com RewriteRule (.*) https://〇〇/$1 [R=301,L] </IfModule>
/home/ユーザー名/wwwの下に、「〇〇.com」と「www. 〇〇.com」の2つがあり、「〇〇.com」にはサイトのすべての情報が、「www.〇〇.com」には.htaccessのみ入っている状態です。
現在の状態
httpsとhttp、wwwありなしの4パターンで試しましたが、いずれもまずhttps://〇〇.comに転送されますが、その後https://〇〇.com→https://〇〇.com→・・・とリダイレクトループが発生してしまいます。
コードの記述内容やフォルダ作成の場所、もしくは他のところが間違っているのでしょうか。
大変お忙しいとは存じますが、ご教示いただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/08 10:27 編集