2012-04-10 16 views
5

ここで私がSSLに関するいくつかの質問をしています。上記HTaccess経由でSSLを強制的に実行する

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} somefolder 
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L] 
  1. htaccessを介して、SSLに行くためにすべてを強制するためのコードです。このコードを特定のIPアドレスに限定する方法はありますか?新しいSSLリンクを使用してサイトを徹底的にテストできるように、自分のIPアドレスだけにSSLを適用したいのですが、 ライブサイトにライブを開始する前にすべてが動作していることを確認してください。私のIPだけでテストするほうがはるかに簡単です。

  2. SSLは任意の取得/投稿に干渉しますか?意味...もし私が上記のコードを使用し、誰かがページ上にいてフォームを提出すればSSLに強制され、それはリダイレクトと見なされます そして投稿/ ?私は今まで走っていたものを台無しにしてしまっているかどうかを事前に見つけようとしています。

  3. SSLを強制してサイトが正常に動作しないという問題が発生したことがありますか?

+1

1)RewriteCond行とIPアドレスを一致させるための '%{REMOTE_ADDR}'変数をもう1つ使用してください。 2)それはリダイレクトです - それはPOSTデータと混乱しますが(GETではありません); 3)それはあなたのサイトをどのようにデザインするかということです。もしあなたがすべてあなたの側でOKでした(必要な場所でHTTPSリンクを使用しました)が、まだ手動でHTTPを使用しようとしていたら(特にPOSTを使用するときエラー(彼はそれを意図的に行うので、彼自身の問題です)。 – LazyOne

+0

BTW - このサイトがどこに配備されるかに応じて、ポート番号を調べる代わりに 'RewriteCond%{HTTPS} = off [NC]'を使うことができます。 8080など)。 – LazyOne

答えて

2

あなたは、あなたのサイトがHTTPSでうまく動作を確認してください(これはサーバ全体のためだと仮定して)、プレーンHTTPをオフにするか、ページを作る(.htaccessまたは主要な構成で)のApacheのhttpdディレクティブを使用したい場合HTTPS経由でサービスする必要がある場合は、プレーンHTTP経由でアクセスするときにエラー(404など)が返されます。 Deny from xxxxxxxを使用すると、特定のIPアドレスに対してこれを達成できます。

mod_rewriteなどを使用して、プレーンなHTTP要求をHTTPS同等のものにリダイレクトしないでください。これはせいぜい問題を隠し、誤った安全感を引き起こします。

この理由は、リダイレクトを使用しても、リダイレクト前に最初の要求がクリアに行われるためです。すべての参照が使用する前にhttps://のURIを使用していることを確認してください。詳細はthis answerで見つけることができます。

+0

とてもいいです、ありがとう。ついに、コアURLをhttpsに変更するだけで、すべての作業が完了しました。 HTTPSに入ると、彼らはそのプロトコルにとどまった。だからログイン時に、私はフォームがHTTPSを指していることを確認し、残りのサイト全体にその方法をとどめました。これは管理パネルだったので、HTTPを強制的にオフにする必要はありませんでした...しかし、あなたがそれをうまく説明した方法はうまくいきました。ありがとう。 – Ninjakreborn

関連する問題