首頁 >後端開發 >php教程 >如何使用 .htaccess 和 mod_rewrite 強制執行 SSL/HTTPS?

如何使用 .htaccess 和 mod_rewrite 強制執行 SSL/HTTPS?

DDD
DDD原創
2024-12-30 12:24:17215瀏覽

How to Enforce SSL/HTTPS Using .htaccess and mod_rewrite?

使用.htaccess 和mod_rewrite 強制執行SSL/HTTPS

要使用.htaccess 和mod_rewrite 強制執行SSL/HTTPS,有多種方法可用。

使用mod_ssl

Apache 的 mod_ssl 提供 SSLRequireSSL 指令,該指令限制訪問,除非啟用 HTTPS。透過將此指令新增至啟用 SSL 的虛擬主機或目錄,可以防止敏感資料外洩。但是,此方法不會重新導向到 HTTPS。

使用mod_rewrite

要重新導向HTTPS,請在.htaccess 檔案中使用mod_rewrite:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

替代方案

強制執行HTTPS的其他選項包括:

  • “使用RewriteRule 的HTTP-HTTPS(SSL 重定向)”中概述的方法:http://www.askapache.com/htaccess/http-https-rewriterule- redirect.html

基於PHP的解決方案

如果 . 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();
    }
}

以上是如何使用 .htaccess 和 mod_rewrite 強制執行 SSL/HTTPS?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn