Unterschied zwischen "Redirect permanent" und mod_rewrite RewriteRule

9

Dies ist ein Apache httpd 2.2 Server.

Wir fordern, dass der Zugriff auf diesen Webserver von HTTPS verschlüsselt wird.

Wenn Web-Clients meine Website unter http://www.example.org/ $ foo (Port 80) besuchen , möchte ich ihre Anfrage auf die mit HTTPS verschlüsselte Website unter https://www.example.org/ $ foo umleiten .

Es scheint zwei übliche Wege zu geben, dies zu tun:

Die erste Methode verwendet die Direktive ' Redirect ' von mod_alias:

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

Die zweite Methode verwendet mod_rewrite:

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

Was ist der Unterschied zwischen einer "Redirect permanent" und der Zeilengruppe mod_rewrite? Ist einer besser als der andere?

Stefan Lasiewski
quelle

Antworten:

8

Standardmäßig leitet mod_rewrite "302 Found" um, die nur vorübergehend sind. Angenommen, alles andere ist gleich, Redirect permanentist gleichbedeutend mit RewriteRule <blah> [R=permanent].

Mark Wagner
quelle
Nein, die RedirectDirektive behandelt die Umleitung von http nach https besser. Siehe Stefans Kommentar unten und überprüfen Sie diesen Abschnitt der Apache-Dokumentation: httpd.apache.org/docs/current/rewrite/avoid.html#redirect
Gondy
7

Ist einer besser als der andere?

Apache empfiehlt jetzt die Verwendung von Redirectfrom mod_aliasanstelle von RewriteRulefrom mod_rewrite. Siehe https://httpd.apache.org/docs/current/rewrite/avoid.html#redirect , in dem steht:

mod_rewrite sollte als letzter Ausweg betrachtet werden, wenn andere Alternativen fehlen. Die Verwendung bei einfacheren Alternativen führt zu Konfigurationen, die verwirrend, zerbrechlich und schwer zu warten sind.

Stefan Lasiewski
quelle
5

Suchmaschinen sehen eine permanente Weiterleitung und aktualisieren ihre Indizes entsprechend.

MDMarra
quelle
> Ist einer besser als der andere?
Stefan Lasiewski