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

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

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

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

Q&A

解決済

2回答

2055閲覧

.htaccessを使ったリダイレクト処理について教えてください。

waon

総合スコア17

.htaccess

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

0グッド

0クリップ

投稿2018/04/26 10:06

.htaccessを使ったリダイレクト処理について教えてください。

以下のドメインのサイトがあるとします。
●example.com

このサイトへアクセスがあった場合に、
以下のように「https」「wwwアリ」のルールでリダイレクトの設定をかけたく、

  1. http://example.comhttps://www.example.com (httpをhttpsへ&wwwを追加)
  2. http://www.example.comhttps://www.example.com (httpをhttpsへ)
  3. https://example.com → https:www.example.com (wwwを追加)

.htaccessで以下のように書いてみたのですが動きませんでした。
(.htaccessは トップページindex.htmlと同じところに置きました)

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

さらに、この下の階層に「www.example.com/event/」があり、
ここ以下の階層はモバイルアクセス時のみ

  1. event/sp/

(例: www.example.com/event/test01/www.example.com/event/sp/test01/)

としたいので、

RewriteEngine on # PC→スマホ RewriteCond %{REQUEST_URI} !/event/sp/ RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android) RewriteRule ^(.*)$ https://www.example.com/event/sp/$1 [R=301,L] # スマホ→PC RewriteCond %{REQUEST_URI} /event/sp/ RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|Android) RewriteRule ^(.*)$ https://www.example.com/event/$1 [R=301,L]

としたのですが、こちらはspの部分は動いたのですが、
上の階層と同じく、wwwやhttpsの挙動が全くナシでした。。。

ネットにある情報で学んでみたのですが、いまいち理解できず。
キャッシュなども絡んで正解もわからず。。

どなたかアドバイスいただけないでしょうか。
宜しくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

(DocumentRoot)/.htaccess のリダイレクトのルールは合っていると思いますが、.htaccess のファイル名は合っていますでしょうか?
あるいは、以下のように 2つのルールに分けてもいいと思います。

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

前段にリバースプロキシーがあって、SSL の終端となっている場合、https かどうかは %{HTTPS} 変数ではわからないかもしれません。

また、(DocumentRoot)/event/.htaccess では、PC の場合にパスから /sp/ を取り除く必要があるので、以下のようになるのではないでしょうか。

RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^example.com$ RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] # PC→スマホ RewriteCond %{REQUEST_URI} !^/event/sp/ RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android) RewriteRule ^(.*)$ https://www.example.com/event/sp/$1 [R=301,L] # スマホ→PC RewriteCond %{REQUEST_URI} ^/event/sp/ RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|Android) RewriteRule ^sp/(.*)$ https://www.example.com/event/$1 [R=301,L]

投稿2018/04/27 22:59

TaichiYanagiya

総合スコア12146

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

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

waon

2018/06/04 16:32

回答ありがとうございました。ご教示いただいた内容ですぐに試してみたのですが、うまくいかず時間が掛かっておりました。ただ、その後分かったのですがDNSルックアップの設定ミスが絡んでいたようで、それを直してからはうまくいきました。遅くなりましたが参考になりました、ありがとうございました。
guest

0

.htaccessが全く動作していないようであれば
利用できるようにサーバーの設定を行う必要があると思われます。

「.htaccess 動かない」等で検索して頂ければ対処方法を見つけられるかと思います。

投稿2018/04/27 02:43

shigotonin

総合スコア21

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

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

waon

2018/06/04 16:27

回答ありがとうございました。問題解決に手間取り、せっかくすぐにご回答いただいたのに遅れてしまい申し訳ありません。自分の知識不足の場合は検索キーワードも適切なものが浮かばないものですね。勉強になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問