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?

Stefan Lasiewski
fonte

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

Mark Wagner
fonte
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.

Stefan Lasiewski
fonte
5

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

MDMarra
fonte
> Um é melhor que o outro?
Stefan Lasiewski