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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

.htaccess

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

Q&A

0回答

1337閲覧

htaccessでのリダイレクトがうまくいかない

maiko_01

総合スコア14

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

.htaccess

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

0グッド

2クリップ

投稿2019/01/22 18:36

編集2019/01/22 23:54

前提・実現したいこと

さくらインターネットのスタンダードプランでサイトを作成しております。
http://hogehoge.jp/
http://www.hogehoge.jp/
https://hogehoge.jp/
https://www.hogehoge.jp/
http://hogehoge.jp/index.php
http://www.hogehoge.jp/index.php
https://hogehoge.jp/index.php
https://www.hogehoge.jp/index.php
URL正規化により、上記を全て「③https://hogehoge.jp/」に統一しようとしています。

問題1:⑧だけリダイレクト前にプライバシーエラーが表示される

「⑧https://www.hogehoge.jp/index.php」だけが一旦リダイレクトされず、URLがこのままアクセスしようとし、Chromeの場合プライバシーエラー(wwwはSSLが適用されていないため)が表示されます。
そして、詳細設定⇒「hogehoge.jpにアクセスする」と進むと、ページにアクセスし、リダイレクトされます。
wwwを含むパターンだと、②や④や⑥もありますが、これらはプライバシーエラーが出ずに、www無しへリダイレクトされます。
なぜ、⑧だけダメなのでしょうか?

問題2:Chromeのシークレットウィンドウでは挙動が異なる

上記の問題、Chromeのシークレットウィンドウではなぜかプライバシーエラーが出ずに正しく動作するんです。

そして逆に、シークレットウィンドウでのみindex.php無しの「④https://www.hogehoge.jp」がリダイレクトされず、そのまま表示されてしまいます。
「②http://www.hogehoge.jp」でも、④にリダイレクトされ、wwwが残ったままアクセスされます。


まとめると、
通常ウィンドウ:⑧のみ×
シークレットウィンドウ:②、④が×

該当のソースコード

htaccessに以下の記載をしています。

htaccess

1<IfModule mod_rewrite.c> 2RewriteEngine On 3 4<IfModule mod_rewrite.c> 5RewriteEngine On 6 7#------------------------ 8# www無しに正規化 9#------------------------ 10RewriteCond %{HTTP_HOST} www¥.hogehoge¥.jp 11RewriteRule .* https://hogehoge.jp$1 [R=301,L] 12#------------------------ 13# index.php無しに正規化 14#------------------------ 15RewriteCond %{THE_REQUEST} ^.*/index.php 16RewriteRule ^(.*)index.php$ http://hogehoge.jp/$1 [R=301,L] 17#------------------------ 18# SSLにリダイレクト 19#------------------------ 20RewriteCond %{ENV:HTTPS} !^on$ 21RewriteCond %{HTTP:X-SAKURA-FORWARDED-FOR} ^$ 22RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 23 24

解決策をご存知の方、ご教授くださいm(__)m

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

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

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

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

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

m.ts10806

2019/01/22 23:04

タグに「.htaccess」を追加してください。「php」もあった方がいいかもしれません
m.ts10806

2019/01/22 23:05

逆に「HTML5」はないほうがいいですね。本件とは関係なさそうです
CHERRY

2019/01/22 23:11 編集

前提として... SSL証明書は、www 付きとwww 無しの両方が必要ですが、ホスト名に対応したSSL証明書がそれぞれ設定されているということでよろしいですか?
otn

2019/01/23 00:12

・他のブラウザで挙動が同じか調べてみる ・ブラウザのキャッシュをクリアする
maiko_01

2019/01/23 03:30

皆様返信ありがとうございます! otn様 上記を試しましたが、挙動は変わりませんでしたm(__)m CHERRY様 なるほど・・。 ssl証明書のコモンネームはwww無しで登録しておりますので、wwwは保護されません。 ※契約時には検討が足りず「リダイレクトさせるしwww無しでいこう」と考えていました。 これが原因なのですね。 でも、②④⑥が警告が出ず、⑧だけアウトなのはなぜなのでしょうか?
wwbQzhMkhhgEmhU

2019/01/23 03:41

よく分からないのに横槍入れてすみません。まずは気になったとこだけ。 ・2番目のリライトでhttpになっちゃうケースがありそうです。 ・疑問なのですが、htaccessはルートに1つだけですか? 情報としても以下が必要です。 ・apacheのログ ・ブラウザのネットワーク記録 さくらのレンタルサーバは特殊な設定が必要なように見えるので、それと合わせて見てみるしかないと思います。失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問