Diferença entre "Redirecionar permanente" x mod_rewrite RewriteRule


9

Este é um servidor Apache httpd 2.2.

Exigimos que o acesso a este servidor da Web seja criptografado por HTTPS.

Quando os clientes da Web visitam meu site em http://www.example.org/ $ foo (porta 80), desejo redirecionar sua solicitação para o site criptografado HTTPS em https://www.example.org/ $ foo.

Parece haver duas maneiras comuns de fazer isso:

O primeiro método usa a diretiva ' Redirect ' de mod_alias:

<VirtualHost *:80>
    Redirect permanent / https://www.example.org/
</VirtualHost>

O segundo método usa mod_rewrite:

<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

Qual é a diferença entre uma "permanente de redirecionamento" e a estrofe mod_rewrite. Um é melhor que o outro?

Respostas:


8

Por padrão, mod_rewrite redireciona "302 Encontrados", que são temporários. Supondo que todo o resto seja igual, Redirect permanenté equivalente a RewriteRule <blah> [R=permanent].


Na verdade não, a Redirectdiretiva trata melhor o redirecionamento de http para https. Veja o comentário de Stefan abaixo e confira esta seção da documentação do Apache: httpd.apache.org/docs/current/rewrite/avoid.html#redirect
Gondy

7

Um é melhor que o outro?

O Apache agora recomenda o uso de Redirectfrom em mod_aliasvez de usar RewriteRulefrom mod_rewrite. Consulte https://httpd.apache.org/docs/current/rewrite/avoid.html#redirect , que diz:

mod_rewrite deve ser considerado um último recurso, quando outras alternativas forem encontradas em falta. Usá-lo quando existem alternativas mais simples leva a configurações confusas, frágeis e difíceis de manter.


5

Os mecanismos de pesquisa verão um redirecionamento permanente e atualizam seus índices de acordo.


> Um é melhor que o outro?
Stefan Lasiewski
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.