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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

.htaccess

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

Q&A

解決済

2回答

10529閲覧

一部ディレクトリ以外をSSL(https)へリダイレクトしたい

pitacora

総合スコア20

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

.htaccess

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

0グッド

0クリップ

投稿2016/11/10 04:43

編集2016/11/10 05:59

サイト全体をSSL化するため、.htaccessにmod_rewriteを使ったリダイレクトを記述しています。
ここまではうまくいくのですが、一部ディレクトリをそのルールから除外しようとするとうまく動作しません。
何かアドバイスやご助言、良いお知恵を拝借できたらと思いまして書き込ませていただきます。

.htaccessには以下のように記述しています。

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

動作の状況は以下の通りです。

  1. http://example.com/にアクセスすると、https://example.com/にリダイレクトされます。
  2. http://example.com/hoge/にアクセスすると、https://example.com/hoge/にリダイレクトされます。
  3. http://example.com/sample/にアクセスすると、https://example.com/にリダイレクトされます。

希望の動作は以下の通りです。
0. http://example.com/にアクセスすると、https://example.com/にリダイレクトされます。
0. http://example.com/hoge/にアクセスすると、https://example.com/hoge/にリダイレクトされます。
0. http://example.com/sample/にアクセスすると、リダイレクトされない。
0. https://example.com/sample/にアクセスすると、http://example.com/sample/にリダイレクトされる。


書き方の順番を入れ替えたり、別のディレクトリで試してみたりしたのですが、うまくいきません。
現状の動作3のように指定したディレクトリだけ違う動きをしているので、
ディレクトリの条件指定はうまくいっているような気がしています。
ワードプレスを利用しているのも原因でしょうか・・・?

良いお知恵を拝借できないものかと投稿させていただきます。よろしくお願いします。


追記します。

.htaccessにはワードプレスのmod_rewriteも記載されており、
これがもしかしたら邪魔しているのだろうか・・・とも、思いましたので、念のため追記いたします・・・。

<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} !(^/sample/) RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteCond %{HTTPS} on RewriteCond %{REQUEST_URI} (^/sample/) RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule> # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress

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

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

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

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

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

guest

回答2

0

ベストアンサー

mod_rewrite以外で何かやってませんか?
たとえばHSTSヘッダを付加しているとか。

ルールだけなら問題なさそうですよ。
http://htaccess.madewithlove.be/
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/sample/
RewriteRule ^(.)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^(/sample/)
RewriteRule ^(.
)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

投稿2016/11/10 05:24

kopio

総合スコア487

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

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

pitacora

2016/11/10 05:44

>kopioさん ご回答いただいてありがとうございます。 不勉強なのもありますが、HSTSヘッダも特に設定したりはしておりません。 mod_rewrite以外にはphpのバージョンを指定しているくらいです。
guest

0

.$
外してみてください

投稿2016/11/10 04:45

kunai

総合スコア5405

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

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

pitacora

2016/11/10 04:51

ご回答いただいてありがとうございます。 ご指示通り外してみましたが、動作は同じままでした。 RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} !(^/sample/) RewriteRule ^(.*)/$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteCond %{HTTPS} on RewriteCond %{REQUEST_URI} (^/sample/) RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
kunai

2016/11/10 04:57

RewriteRule ^(.*)/$ これも RewriteRule ^(.*)$ と、スラッシュを削除してください。
Y.H.

2016/11/10 05:06

念のためクライアント(ブラウザ)のキャッシュクリアしてから試してみてください。
pitacora

2016/11/10 05:07

ご返信いただいてありがとうございます。 こちらも削除して試してみましたが、やはり動作は同じでした。 度々ご返信いただいたのに、申し訳ありません・・・。 RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} !(^/sample/) RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteCond %{HTTPS} on RewriteCond %{REQUEST_URI} (^/sample/) RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
pitacora

2016/11/10 05:08

>Y.H.さん ありがとうございます。都度キャッシュを削除します、ご助言ありがとうございます。
kunai

2016/11/10 05:17

/sample/の直下に別の.htaccessが置いてあって、それがTOPページに飛ばしてたりしませんか? 若しくは、httpd.comf等に書かれているとか ちなみにこちらでテスト環境作ってみましたが、想定通りの動作をしています。
pitacora

2016/11/10 05:40

>kunaiさん コメントありがとうございます、わざわざテストもしていただいて…ありがとうございます! ご指摘いただいた2点についてご連絡します。 1)sample内には.htaccessは設置されていません 2)httpd.confはレンタルサーバの仕様上確認できないようになっています・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問