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

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

新規登録して質問してみよう
ただいま回答率
85.48%
さくらのレンタルサーバ

さくらのレンタルサーバとは、格安サーバーで知られるさくらインターネット社の提供する共有レンタルサーバー。Webサイトの構築から簡単なプログラミングまで幅広く利用することができ、プランが多いことも特徴です。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

2回答

15896閲覧

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

khir

総合スコア13

さくらのレンタルサーバ

さくらのレンタルサーバとは、格安サーバーで知られるさくらインターネット社の提供する共有レンタルサーバー。Webサイトの構築から簡単なプログラミングまで幅広く利用することができ、プランが多いことも特徴です。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

0クリップ

投稿2019/04/03 14:23

編集2019/04/07 13:01

前提・実現したいこと

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

サーバーの番号が不明ですが、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 03:36

編集2019/04/08 03:42
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

khir

2019/04/08 10:27 編集

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

0

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

投稿2019/04/03 15:09

zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

khir

2019/04/03 16:28

こんばんは。ご回答いただきまして、誠にありがとうございます。 ページを拝見させていただきましたが、非常に近い状態だと思います。 こちらのページの「SSLを使用し、wwwなしで統一する場合」の方法で挑戦してみようと思います。 https://engineer-milione.com/create/sakura-htaccess.html#2 結果は追ってご報告させていただきたいと思います。
khir

2019/04/05 13: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→・・・とリダイレクトループが発生してしまいます。 コードの記述内容やフォルダ作成の場所、もしくは他のところが間違っているのでしょうか。 大変お忙しいとは存じますが、ご教示いただけますと幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問