这是一个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_alias
的Redirect
,而不是使用mod_rewrite
RewriteRule
。 请参阅https://httpd.apache.org/docs/current/rewrite/avoid.html#redirect ,其中说:
mod_rewrite应该被认为是最后的手段,当其他select被发现想要。 当有更简单的select时,使用它会导致configuration混乱,脆弱和难以维护。