ウェブページのサブセットをhttpsに、他のすべてのウェブページをhttpに強制します。 htaccessファイルで 私は別のポストで見つかった次のスクリプトを使用しますが、それは働いていませんでした...それがあるべきようウェブページのサブセットをHTTPSとして強制的に送信
RewriteCond %{HTTPS} off
RewriteRule ^(login|signup)\.php https://%{HTTP_HOST}%{REQUEST_URI} [R,L,QSA]
RewriteCond %{HTTPS} on
RewriteCond ${REQUEST_URI} !(login|signup)\.php
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L,QSA]
HTTPは、強制され、それがあるべきとしてHTTPSを強制されていますが、例えばhttps://mywebsite.com/signupブラウザに無限ループエラーが発生します。どのようなアイデアが間違っている?
次のように動作するように変更されましたが、SSLはウェブページの安全で安全でないアイテムのために部分的にしか実装されていません。私はURLを例えばにチェックした。画像、スタイルシート、外部のjavascriptファイルなどはすべて相対的なもので、問題はありません。誰かがこれに対処する方法を知っていれば、私はそれを聞いてうれしいでしょう。
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/login$ [OR]
RewriteCond %{REQUEST_URI} ^/signup$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !login$
RewriteCond %{REQUEST_URI} !signup$
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
非ログイン/サインアップページにはHTTPを強制する必要はありません(アカウントがあれば、そのページはどうですか?HTTP経由で配信されますか?)。代わりに、適切なURLをコード内に生成してください(つまり、 'do' ')の代わりにmod_rewriteの助けを借りずに常にHTTPに行きます。顧客がHTTPS経由でホームページや他のページに行きたい場合は、その人に連絡してください。何も問題はありません。顧客が意図的にURLを変更しない限り、適切なURLを持つすべてのリンクがある限り、これは起こりません。 – LazyOne
HTTPを強制しないことで、セキュアページの安全でないコンテンツ(CSS/JS/Images)に関する問題は発生しません。これは私のウェブサイトを常にコード化する方法です。はい、既存のページにドメイン名とプロトコルを含めるようにすべてのリンクを変更するのはかなり手間がかかりますが、新しいページ/新しいプロジェクトでは差異はありません**(追加のオーバーヘッドはありません)。はい、あなたはmod_rewrite(1つまたは2つの条件を追加)で修正できるはずですが、それは正しい方法ではありません(少なくとも私の意見では)。 – LazyOne
ありがとうございました。私は今、mod_rewriteを使用して、接続を保護する必要のあるページでhttpsを強制します。 httpを強制した部分を削除しました。 js/css/imageファイルをhttpにリダイレクトする(これらのファイルはRewriteCondで検証されませんでした)、同じページに安全なアイテムと安全でないアイテムがあるという問題がありました。あなたはすべてがうまくいくと示唆したように、httpやhttps(そして、ユーザーがURLを変更した場合の後者の強制https)のすべてを適切に参照することで、ありがとうございました! – DigitalMD