Différence entre «Redirect permanent» et mod_rewrite RewriteRule

9

Il s'agit d'un serveur Apache httpd 2.2.

Nous exigeons que l'accès à ce serveur Web soit crypté par HTTPS.

Lorsque les clients Web visitent mon site à http://www.example.org/ $ foo (port 80), je souhaite rediriger leur demande vers le site Web chiffré HTTPS à https://www.example.org/ $ foo.

Il semble y avoir deux façons courantes de procéder:

La première méthode utilise la directive ' Redirect ' de mod_alias:

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

La deuxième méthode utilise mod_rewrite:

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

Quelle est la différence entre une "Redirection permanente" et la strophe mod_rewrite. Est-ce que l'un est meilleur que l'autre?

Stefan Lasiewski
la source

Réponses:

8

Par défaut, mod_rewrite fait des redirections "302 Found", qui sont temporaires. En supposant que tout le reste est égal, Redirect permanentéquivaut à RewriteRule <blah> [R=permanent].

Mark Wagner
la source
En fait non, la Redirectdirective gère mieux la redirection de http vers https. Voir le commentaire de Stefan ci-dessous et consultez cette section de la documentation Apache: httpd.apache.org/docs/current/rewrite/avoid.html#redirect
Gondy
7

Est-ce que l'un est meilleur que l'autre?

Apache recommande désormais l'utilisation de Redirectfrom mod_aliasau lieu d'utiliser RewriteRulefrom mod_rewrite. Voir https://httpd.apache.org/docs/current/rewrite/avoid.html#redirect , qui dit:

mod_rewrite devrait être considéré comme un dernier recours, lorsque d'autres alternatives s'avèrent insuffisantes. Son utilisation lorsqu'il existe des alternatives plus simples conduit à des configurations déroutantes, fragiles et difficiles à maintenir.

Stefan Lasiewski
la source
5

Les moteurs de recherche verront une redirection permanente et mettront à jour leurs index en conséquence.

MDMarra
la source
> Est-ce que l'un est meilleur que l'autre?
Stefan Lasiewski