我找到了两种使用 apache 将 http 重定向到 https 的方法。使用重定向
Redirect / https://mydomain/
或者重写
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://mydomain/$1 [R,L]
有什么区别?
答案1
官方文档何时不使用 mod_rewrite列表 简单重定向并提供 HTTP 到 HTTPS 作为示例:
mod_alias提供
Redirect
和RedirectMatch
指令,提供将一个 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,所以最好使用它,除非你需要一些它不能做的事情。