.htaccessのRewriteEngineの記述の仕方について教えて下さい。


ホームページのSSL化に伴い、下記4つのURLで始まるアクセス
(1) http://hoge.jp
(2) https://hoge.jp
(3) http://www.hoge.jp
(4) https://www.hoge.jp
を、https://www.hoge.jp にRewriteする必要があります。

現状、下記で試験運用しているのですが、(3)(4)が素通りしていまい、(3)が問題です。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(hoge\.jp)(:80)? [NC]
RewriteRule ^(.*) https://www.hoge.jp/$1 [R=301,L]
order deny,allow

下記のようにも書いてみたのですが、無限ループに入りこんでしまいました。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(hoge\.jp) [OR]
RewriteCond %{HTTP_HOST} ^(www\.hoge\.jp)(:80)? [NC]
RewriteRule ^(.*) https://www.hoge.jp/$1 [R=301,L]
order deny,allow

どうぞ、ご教授のほど、よろしくお願い致します。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/08/16 00:16:27
  • 終了:2011/08/23 00:20:03

回答(1件)

id:km1981 No.1

km1981回答回数429ベストアンサー獲得回数492011/08/16 10:12:53

ポイント500pt

(4)は何も変換していないのですから

むしろ素通りすべきです

そうしないと無限ループに陥ってしまいます


下のルールで試してみてください

RewriteEngine On
RewriteCond %{SERVER_PROTOCOL} !^https [OR]
RewriteCond %{HTTP_HOST} ^(hoge\.jp)(:80)? [NC]
RewriteRule ^(.*) https://www.hoge.jp/$1 [R=301,L]
id:asta59

ご回答ありがとうございます。

早速試してみましたが、フリーズしてしまいます。

https://wwwで始まるrootより深い階層へのアクセスがNGのようです。

Access Analyzerも固まってしまいます。

引き続き、ご教授のほど、よろしくお願い致します。

2011/08/16 22:36:52
  • id:asta59
    km1981さんの回答から、

    (1)RewriteCond %{SERVER_PROTOCOL} !^https
    であり、かつ、
    (2)RewriteCond %{HTTP_HOST} ^(www\.hoge\.jp)(:80)? [NC]
    のとき、
    若しくは、
    (3)RewriteCond %{HTTP_HOST} ^(hoge\.jp)(:80)? [NC]
    のとき、
    RewriteRule ^(.*)$ https://www.hoge.jp/$1 [R=301,L]
    を実行する、という表記ができればよいと思うのですが、
    これらをどのように表記したらよいかご教授いただけないでしょうか。

    どうぞ、よろしくお願い致します。
  • id:asta59
    下記の記述でRewriteがうまく動作するようになりました。
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^(hoge\.jp)(:80)? [NC]
    RewriteRule ^(.*)$ https://www.hoge.jp/$1 [R=301,L]
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} ^(www\.hoge\.jp)(:80)? [NC]
    RewriteRule ^(.*)$ https://www.hoge.jp/$1 [R=301,L]

    違いがよく判らないのですが、
    4行目のRewriteCond %{HTTPS} off が
    RewriteCond %{SERVER_PROTOCOL} !^https だと
    無限ループにはまってしまいます。

    Access AnalyzerにRA_Liteを使っていて、同一root内の別階層にあるphpにアクセスに行ってはまっているようです。

    ヒントをありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません