サイトの特定のセクションにhttpまたはhttpsでアクセスさせるためのスクリプトを作成しました。私たちは、ユーザーが通常のhttpページにリダイレクトされることを願っています。これまでのところ、とても良いですが、私はあなたのために2つの質問があります。http/httpsを強制する:リダイレクト時にhttpsとどのステータスヘッダーを送信するかを検出するにはどうすればよいですか?
スイッチングプロトコルで正しいステータスヘッダーとは何ですか?私は現在、リダイレクトする前に、両方のケースで、これを使用しています:
header('HTTP/1.1 301 Moved Permanently');
我々は、HTTPSを使用しているかどうかを検出するための好ましい方法は何ですか?
// if ($_SERVER['SERVER_PORT'] == 443) /* EDIT: OK, not this? */ if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) === 'on'))
他に何か?どちらも?コメントへの
回答:
我々は、Apacheを使用しているが、普遍的な解決策があるかどうそれは素晴らしいだろう。
.htaccess
を使用したくないのは、使用しているCMSによってhttpsに必要なページが「フラグが立てられている」ことと、これが一部であるためです。 URLをファイルに「ハードコードする」必要はありません。
IIRCでは、 '$ _SERVER ['HTTPS']'は一部のサーバ(つまりApache)にのみ存在します。 – ceejayoz
ポートの検査は信頼できません。 443以外のポートでSSLを実行することも可能ですが、HTTPSを使用しないでポート443 *に接続することもできます(ただし、通常はサーバーがエラーでリクエストを強制終了します)。 – animuson
なぜ私はhtaccessのにおいがしませんか? –