質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.78%

さくらインターネットでのリダイレクトループを解決したい。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 5,716

khir

score 13

前提・実現したいこと

さくらインターネットのレンタルサーバーで管理しているシリウスで作ったサイトが、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→・・・とリダイレクトループが発生してしまいます。

コードの記述内容やフォルダ作成の場所、もしくは他のところが間違っているのでしょうか。
大変お忙しいとは存じますが、ご教示いただけますと幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

サーバーの番号が不明ですが、FreeBSDのアップデートのさくらインターネットの公式アナウンスにある通り、

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>

が、書かれていると アップデート後のサーバーでは、不具合を起こします。

FreeBSDのアップデートに伴う変更点 (2019/4/2 更新) 参照。

(2019年2月12日追記)
【.htaccessの記述について】
ご利用のサーバ内に設置の.htaccessに「SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1」の記述がある場合、
OSのバージョンアップ以降にページが表示されなくなる不具合が発生いたします。
このため、.htaccessにこの記述があった場合、メンテナンス時に記述のある行のみコメントアウトいたします。
以前の環境では必要な記述でしたが、現在は不要な記述となりますので、事前にお客様側で修正いただくことも可能です。

等、リダイレクトするための記載の問題でしょう。


まずは、http -> https のリダイレクトの設定を削除して、問題がなくなるのか確認してください。


リダイレクトループの問題が発生しなくなったことを確認して、暗号化(SSL)を有効としている場合、暗号化しているページへ誘導したい の方法で、HTTP -> HTTPS のリダイレクト設定を実施してみてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/04/08 19:24 編集

    ご回答いただきまして、誠にありがとうございます。元々の記述から下記部分を消去しましたところ、無事に閲覧できるようになりました。
    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>

    加えて、HTTP -> HTTPS のリダイレクト設定として下記コードを最上部に記述しましたところ、HTTP -> HTTPS にリダイレクトされるようになりました。

    <IfModule mod_rewrite.c>
    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]
    </IfModule>

    この度は本当に有難うございました。心より感謝申し上げます。

    キャンセル

0

こんばんは、もしかしますと、こちらのページに掲載された内容に近い状態でしょうか?
https://ja.stackoverflow.com/questions/26736/さくらサーバーのhtaccessでhttpsを検知するには

投稿

コミュニティ
さくらインターネット コミュニティ、Developer Advocate
  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/04/04 01:28

    こんばんは。ご回答いただきまして、誠にありがとうございます。
    ページを拝見させていただきましたが、非常に近い状態だと思います。

    こちらのページの「SSLを使用し、wwwなしで統一する場合」の方法で挑戦してみようと思います。
    https://engineer-milione.com/create/sakura-htaccess.html#2

    結果は追ってご報告させていただきたいと思います。

    キャンセル

  • 2019/04/05 22:29

    お世話になっております。ご教示いただいたサイトと下記サイトを参考に試行錯誤してみましたが、未だにリダイレクトループから抜け出せておりません。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→・・・とリダイレクトループが発生してしまいます。

    コードの記述内容やフォルダ作成の場所、もしくは他のところが間違っているのでしょうか。
    大変お忙しいとは存じますが、ご教示いただけますと幸いです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問