Apache 将 HTTP 重定向到 HTTPS 重定向或重写?

Apache 将 HTTP 重定向到 HTTPS 重定向或重写?

我找到了两种使用 apache 将 http 重定向到 https 的方法。使用重定向

Redirect / https://mydomain/

或者重写

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

有什么区别?

答案1

官方文档何时不使用 mod_rewrite列表 简单重定向并提供 HTTP 到 HTTPS 作为示例:

mod_alias提供RedirectRedirectMatch指令,提供将一个 URL 重定向到另一个 URL 的方法。这种将一个 URL 或一类 URL 简单重定向到其他地方的操作应该使用这些指令来完成,而不是RewriteRule. RedirectMatch允许您在重定向条件中包含正则表达式,从而提供使用的许多好处 RewriteRule

的常见用途RewriteRule是重定向整个 URL 类。例如,/one目录中的所有 URL 都必须重定向到 http://one.example.com/,或者也许所有 http 请求都必须重定向到 https。

Redirect指令可以更好地处理这些情况。

RewriteRule如果你只能访问处理 HTTP 和 HTTPS 的单个配置部分,则你的示例可能是一个必要的 hack。这种情况在以下情况下很常见:.htaccess例如在共享主机上涉及的文件。那是另一个故事;何时(不)使用 .htaccess 文件

答案2

它们做同样的事情。Redirect更简单,更容易阅读,并且不需要 mod_rewrite,所以最好使用它,除非你需要一些它不能做的事情。

相关内容