Apache-2.4

Apache 將 HTTP 重定向到 HTTPS 重定向還是重寫?

  • March 13, 2021

我找到了兩種使用 apache 將 http 重定向到 https 的方法。使用重定向

Redirect / https://mydomain/

或重寫

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://mydomain/$1 [R,L]

有什麼區別?

關於何時不使用 mod_rewrite的官方文件列出了 簡單重定向,並以 HTTP 到 HTTPS 為例:

mod_alias提供了RedirectandRedirectMatch指令,它們提供了一種將一個 URL 重定向到另一個 URL 的方法。這種將一個 URL 或一類 URL 簡單地重定向到其他地方,應該使用這些指令而不是RewriteRule. RedirectMatch允許您在重定向條件中包含正則表達式,從而提供使用 RewriteRule.

的一個常見用途RewriteRule是重定向整個 URL 類。例如,/one目錄中的所有 URL 都必須重定向到 http://one.example.com/,或者可能所有 http 請求都必須重定向到 https。

Redirect指令可以更好地處理這些情況。

如果一個人只能訪問處理 HTTP 和 HTTPS 的單個配置部分,那麼您的RewriteRule範例可能是必要的 hack。這在涉及文件時很常見,.htaccess例如在共享主機上。那是另一個故事。何時(不)使用 .htaccess 文件

引用自:https://serverfault.com/questions/1056949