这是一个 Apache httpd 2.2 服务器。
我们要求对此网络服务器的访问通过 HTTPS 加密。
当网络客户端访问我的网站时http://www.example.org/$foo (端口 80),我想将他们的请求重定向到 HTTPS 加密网站https://www.example.org/$foo 。
似乎有两种常见的方法可以做到这一点:
第一种方法使用'重定向' 来自 mod_alias 的指令:
<VirtualHost *:80>
Redirect permanent / https://www.example.org/
</VirtualHost>
第二种方法是使用mod_rewrite:
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
“永久重定向”和 mod_rewrite 节之间有什么区别。其中一个比另一个更好吗?
答案1
默认情况下,mod_rewrite 会执行“302 Found”重定向,这是临时的。假设其他所有条件相同,Redirect permanent
则相当于RewriteRule <blah> [R=permanent]
。
答案2
一个比另一个更好吗?
Apache 现在建议使用Redirect
frommod_alias
而不是RewriteRule
from mod_rewrite
。请参阅https://httpd.apache.org/docs/current/rewrite/avoid.html#redirect,其中写道:
当发现其他替代方案不尽如人意时,mod_rewrite 应被视为最后的手段。当有更简单的替代方案时使用它会导致配置混乱、脆弱且难以维护。
答案3
搜索引擎将看到永久重定向并相应地更新其索引。