Perbedaan antara "Redirect permanen" vs mod_rewrite RewriteRule

9

Ini adalah server Apache httpd 2.2.

Kami mengharuskan akses ke server web ini dienkripsi oleh HTTPS.

Ketika klien web mengunjungi situs saya di http://www.example.org/ $ foo (port 80), saya ingin mengarahkan kembali permintaan mereka ke situs web terenkripsi HTTPS di https://www.example.org/ $ foo.

Tampaknya ada dua cara umum untuk melakukan ini:

Metode pertama menggunakan arahan ' Redirect ' dari mod_alias:

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

Metode kedua menggunakan mod_rewrite:

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

Apa perbedaan antara "Redirect permanen" dan stanza mod_rewrite. Apakah yang satu lebih baik dari yang lain?

Stefan Lasiewski
sumber

Jawaban:

8

Secara default mod_rewrite melakukan redirect "302 Found", yang bersifat sementara. Anggap semuanya sama, Redirect permanentsetara dengan RewriteRule <blah> [R=permanent].

Mark Wagner
sumber
Sebenarnya tidak, Redirectarahan menangani pengalihan dari http ke https lebih baik. Lihat komentar Stefan di bawah ini dan periksa bagian dokumentasi Apache ini: httpd.apache.org/docs/current/rewrite/avoid.html#redirect
Gondy
7

Apakah yang satu lebih baik dari yang lain?

Apache sekarang merekomendasikan penggunaan Redirectdari mod_aliasdaripada menggunakan RewriteRuledari mod_rewrite. Lihat https://httpd.apache.org/docs/current/rewrite/avoid.html#redirect , yang mengatakan:

mod_rewrite harus dianggap sebagai upaya terakhir, ketika alternatif lain ditemukan kekurangan. Menggunakannya ketika ada alternatif yang lebih sederhana mengarah pada konfigurasi yang membingungkan, rapuh, dan sulit untuk dipelihara.

Stefan Lasiewski
sumber
5

Mesin pencari akan melihat pengalihan permanen dan memperbarui indeks mereka sesuai.

MDMarra
sumber
> Apakah yang satu lebih baik dari yang lain?
Stefan Lasiewski