-
ID:DCgEAo さんの質問

一部のページのみSSLにする設定でかなーり苦戦してます。どなたがお助けください。
contactページのみリダイレクトさせてSSLに設定したいと思っていますが、出来ません。
下記がhtaccessのコードです。
また、.*/contact/の部分を.*/contact.php$に変えるとリダイレクトループしてしまいます。

<IfModule mod_rewrite.c>
 RewriteEngine on
   RewriteBase /
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !(.*/contact/)
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} .*/contact/
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>

みんなの回答 2 件

ID:QKacbP さんの回答

うーん、なんか色々書き方気になるところがある。
.*/とか必要?

このサイトとか、役に立ちそう。

mod_rewriteの考え方。 - こせきの技術日記

http://koseki.hatenablog.com/entry/20090611/ModRewrite
ID:DCgEAo

ありがとうございます!大変参考になります!!下記のように変えましたが、未だ解決せずです。。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

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

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} contact/
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>

ID:FZKurA さんの回答

  1. RewriteBase /ってサーバーのドキュメントルートのことだけど、contactおいてるディレクトリと一致してる?
  1. httpの後ろの:が全角に見える
  1. httpからのURLを直接書いた場合は転送されるのか
    →される:contactにヒットさせるルールはあってる
    →されない:contactのルールが間違ってる
  1. RewriteCond %{HTTPS} onまたはoff片方だけ残してみて動く?

ID:DCgEAo

ありがとうございます!!!!

contact.phpをurl上はcontact/にしているのは関係あるんでしょうか?その辺りが怪しいような気がしています。
RewriteRule ^contact/(.*)$ contact.php [L]

最終更新日:2013-07-25 (4,601 views)

関連するトピックス

ページ上部に戻る