“redirect永久”与mod_rewrite RewriteRule之间的区别

这是一个Apache httpd 2.2服务器。

我们要求通过HTTPSencryption这个networking服务器。

当Web客户端访问我的网站http://www.example.org/ $ foo(端口80)时,我想将他们的请求redirect到https://www.example.org/ $ foo的HTTPSencryption网站。

似乎有两种常见的方法来做到这一点:

第一种方法使用mod_alias中的“ Redirect ”指令:

<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> 

“redirect永久”和mod_rewrite节之间有什么区别? 一个比另一个更好吗?

默认情况下,mod_rewrite是“302 Found”redirect,这是临时的。 假设一切都是平等的, Redirect permanent等同于RewriteRule <blah> [R=permanent]

search引擎会看到一个永久的redirect,并相应地更新他们的索引。

一个比另一个更好吗?

Apache现在推荐使用mod_aliasRedirect ,而不是使用mod_rewrite RewriteRule 。 请参阅https://httpd.apache.org/docs/current/rewrite/avoid.html#redirect ,其中说:

mod_rewrite应该被认为是最后的手段,当其他select被发现想要。 当有更简单的select时,使用它会导致configuration混乱,脆弱和难以维护。