[解決済み】.htaccessとmod_rewriteで強制的にSSL/https化する。
2022-04-01 11:57:19
質問
PHPで.htaccessとmod_rewriteのページ指定を使って強制的にSSL/httpsにするにはどうすればよいですか?
どのように解決するのですか?
Apacheの場合は
mod_ssl
で強制的にSSL化します。
SSLRequireSSL Directive
:
このディレクティブは、現在の接続で HTTP over SSL (すなわち HTTPS) が有効になっていない限り、アクセスを禁止します。これは、SSL が有効なバーチャルホストやディレクトリの中で、 保護されるべきものを公開してしまう設定ミスから守るために非常に便利です。このディレクティブがあるときは、SSL を使っていないすべてのリクエストは拒否されます。
しかし、これではhttpsへのリダイレクトはできません。リダイレクトさせるには、以下のように
mod_rewrite
を .htaccess ファイルに記述してください。
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
で紹介されているような様々なアプローチがあります。
プロバイダが.htaccessを無効にしている場合、PHPから解決することもできます(あなたが要求しているので、それはあり得ませんが、とにかく)。
if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
if(!headers_sent()) {
header("Status: 301 Moved Permanently");
header(sprintf(
'Location: https://%s%s',
$_SERVER['HTTP_HOST'],
$_SERVER['REQUEST_URI']
));
exit();
}
}
関連
-
[解決済み】PHPのクラスが見つからないが、インクルードされている
-
[解決済み] どのような場合に '$this' よりも 'self' を使うべきですか?
-
[解決済み] PHPのエラーを表示させるにはどうしたらいいですか?
-
[解決済み] OpenSSLを使用して自己署名入りSSL証明書を生成する方法を教えてください。
-
[解決済み] "お知らせ 未定義変数"、"Notice: Notice: 未定義のインデックス", "Notice:未定義のインデックス", "Notice."。PHPを使用した「未定義のオフセット
-
[解決済み] HTTPSのURLは暗号化されていますか?
-
[解決済み] JavaScriptでHTTPまたはHTTPSを検出し、HTTPSを強制的に実行する
-
[解決済み】自己署名付きlocalhost証明書をChromeが受け入れるようにする方法
-
[解決済み】htaccess で https://www にリダイレクトされる。
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み】Weird PHP error: 'Can't use function return value in write context'.
-
[解決済み] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given [重複] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given.
-
[解決済み】空の配列要素を削除する
-
[解決済み】「初期通信パケットの読み込み」でMySQLサーバーに接続できなくなり、システムエラーになる。0
-
[解決済み】XAMPPエラー: www.example.com:443:0 サーバー証明書に、サーバー名と一致するIDが含まれていません。
-
[解決済み】PHP フェイタルエラー。未定義の関数mssql_connect()をコールしています。
-
[解決済み】Netbeans 7.4 for PHPで「スーパーグローバルな$_POST配列に直接アクセスしないでください」という警告が発生する。
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】phpのシンタックスエラー、予期しないT_IFエラーを修正する方法は?[クローズド]。