忍者ブログ

2024-11-21(Thu)

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2018-12-28(Fri)

301リダイレクトでエラーになる

Chromeが常時SSL化をしていないサイトに対して「保護されていない通信」と出すようになってだいぶ経ちますが、今だSSL化に対応していないサイトは多いです。

実は自分が担当している会社のホームページも常時SSLには対応おらず、利用しているwebサービス会社がやっと対応できることになって設定をしました。

設定自体は難しくなかったのですが、ホームページを見るときにアドレスバーに直接URLを打ち込むなんてことはほとんどなく、ブックマークか検索から見に来る方がほとんどかと思います。なので、http://として接続してくるのですが、それをhttps://にリダイレクトする技があるようなので試してみました。

なお、使っているWebサービスはビッグローブのFeather Cloud。サイト作成機能は使わずに自前で作ってFTPで転送しています。

さて、http://からhttps://にリダイレクトするには、.htaccessというファイルを使って行うのが一般的なようです。で、検索してみると、大体が以下の構文が出てきます。

RewriteEngine on
RewriteCond %{ HTTPS} off
RewriteRule ^(.*)$ https://%{ HTTP_HOST}%{REQUEST_URI} [L,R=301]

これを.htaccess ファイルに書き込み、ルートディレクトリ(トップのindex.htmlと同じ場所)に置いておくとhttp://で接続してきても、https://にリダイレクトしてくれるのです。

が、やってみても以下のエラーが出て表示されなくなります。履歴やCookieを削除しても同じです。

Chromeの場合(このページは動作していません ERR_TOO_MANY_REDIRECTS)



IEの場合(このページを表示できません リダイレクトが多すぎました INET_E _REDIRECT_FAILED)


Chromeのエラーである、ERR_TOO_MANY_REDIRECTS がヒントになります。
何度も何度もリダイレクトしている状態「リダイレクトループ」となっているようです。

ただ、先ほどの構文

RewriteEngine on
RewriteCond %{ HTTPS} off
RewriteRule ^(.*)$ https://%{ HTTP_HOST}%{REQUEST_URI} [L,R=301]

の真ん中2行目の「RewriteCond %{ HTTPS} off」はhttpsだったらオフにする。実行しないはずです。それが効いていないということになります。

あるサーバーではこの書き方だと効かないとも書かれてあったので、2行目を以下に書き直してもみました。

RewriteCond %{ENV:HTTPS} !^on$

しかし、同じエラーが出ます。
もしかしてFeather Cloudは.htaccessはダメなんじゃないかとも思い始めます。
ただ、Feather Cloudのサポートには以下のように書かれています。
ーーーーーー
サイトをSSL化した際は、併せて以下の3点を対応いただくことをお勧めします。
【1】Google Search Consoleなどに設定しているサイトURLを、http://→httpsに変更する。
【2】Canonicalタグ設定のサイトURLを、http://→httpsに変更する。
【3】301リダイレクト設定で、http:// → https://に転送する。
▼301リダイレクトとは
サイトの移設(ドメインの変更)やURLが変更する場合に、変更前のURLから変更後のURLへサイトを転送させ、サイト閲覧者と検索エンジンを誘導する仕組みをいいます。
なお、上記の設定については、弊社でのサポート対象外のため設定方法等の詳細についてはご案内できません
ーーーーーーー
今回行ているのは、【3】の301リダイレクトです。まさに、.htaccessファイルを使ってのリダイレクト方法です。
できるはず。けどご案内できません・・・・って

探しに探してやっと以下のサイトを見つけました。
https://ikuty.com/2016/07/02/aws-htaccess-without-redirectloop/

どうやらAWS等クラウドの環境下でロードバランサが悪さをしているらしい・・・

で、サイトを参考(というかコピーです)に以下のように書き直しました。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{ENV:HTTPS} !^on$
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

結果は・・・・

うまくいきました。
いいんです。結果オーライです。

拍手[10回]

PR

この記事にコメントする

Name
Title
Mail
URL
Comment
Pass
Pictgram
Vodafone絵文字 i-mode絵文字 Ezweb絵文字

Amazon

PR

情報サービス

楽天

ソフト関連

メーカー直販PC

周辺機器

ランキング

プロフィール

HN:
NORI
性別:
男性
趣味:
車でどこへでも
自己紹介:
文学部卒業ながら、ひょんなことからシステム会社に就職。
しかしながらあまりの激務に退職。もうシステム系はいやだと思っていたが、ひょんなことから企業の電算室に勤務することとなる。

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

ブログ内検索

Google
Web ブログ内

最新TB

アクセス解析