Różnica między „stałym przekierowaniem” a mod_rewrite RewriteRule


9

To jest serwer Apache httpd 2.2.

Wymagamy, aby dostęp do tego serwera był szyfrowany przez HTTPS.

Kiedy klienci sieci odwiedzają moją witrynę pod adresem http://www.example.org/ $ foo (port 80), chcę przekierować ich żądanie do zaszyfrowanej strony internetowej HTTPS pod adresem https://www.example.org/ $ foo.

Wydaje się, że istnieją dwa typowe sposoby:

Pierwsza metoda wykorzystuje dyrektywę „ Przekierowanie ” z mod_alias:

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

Druga metoda wykorzystuje mod_rewrite:

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

Jaka jest różnica między „stałym przekierowaniem” a zwrotką mod_rewrite. Czy jedno jest lepsze od drugiego?

Odpowiedzi:


8

Domyślnie mod_rewrite dokonuje przekierowań „Znaleziono 302”, które są tymczasowe. Zakładając, że wszystko inne jest równe, Redirect permanentjest równoważne RewriteRule <blah> [R=permanent].


Właściwie nie, Redirectdyrektywa lepiej obsługuje przekierowanie z http na https. Zobacz komentarz Stefana poniżej i sprawdź tę sekcję dokumentacji Apache: httpd.apache.org/docs/current/rewrite/avoid.html#redirect
Gondy

7

Czy jedno jest lepsze od drugiego?

Apache teraz zaleca stosowanie Redirectod mod_aliaszamiast korzystania RewriteRulez mod_rewrite. Zobacz https://httpd.apache.org/docs/current/rewrite/avoid.html#redirect , który mówi:

mod_rewrite należy traktować jako ostateczność, gdy inne alternatywy są poszukiwane. Używanie go, gdy istnieją prostsze alternatywy, prowadzi do konfiguracji, które są mylące, kruche i trudne do utrzymania.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.