“永久重定向”与mod_rewrite RewriteRule之间的区别

“永久重定向”与mod_rewrite RewriteRule之间的区别

这是一个 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 现在建议使用Redirectfrommod_alias而不是RewriteRulefrom mod_rewrite。请参阅https://httpd.apache.org/docs/current/rewrite/avoid.html#redirect,其中写道:

当发现其他替代方案不尽如人意时,mod_rewrite 应被视为最后的手段。当有更简单的替代方案时使用它会导致配置混乱、脆弱且难以维护。

答案3

搜索引擎将看到永久重定向并相应地更新其索引。

相关内容