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?

Jawaban:


8

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


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.


5

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


> Apakah yang satu lebih baik dari yang lain?
Stefan Lasiewski
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.