“Yönlendirme kalıcı” ile mod_rewrite arasındaki fark RewriteRule


9

Bu bir Apache httpd 2.2 sunucusudur.

Bu web sunucusuna erişimin HTTPS tarafından şifrelenmesini istiyoruz.

Web istemcileri sitemi http://www.example.org/ $ foo adresinde (80 numaralı bağlantı noktası) ziyaret ettiğinde , isteklerini https://www.example.org/ $ foo adresindeki HTTPS şifreli web sitesine yönlendirmek istiyorum .

Bunu yapmanın iki yaygın yolu var gibi görünüyor:

İlk yöntem mod_alias ' Yönlendirme ' direktifini kullanır :

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

İkinci yöntem mod_rewrite kullanır:

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

"Yönlendirme kalıcı" ve mod_rewrite stanza arasındaki fark nedir. Biri diğerinden daha mı iyi?

Yanıtlar:


8

Varsayılan olarak mod_rewrite geçici olan "302 Bulundu" yönlendirmelerini yapar. Diğer her şeyin eşit olduğunu varsayarsak Redirect permanent, buna eşdeğerdir RewriteRule <blah> [R=permanent].


Aslında hayır, Redirectdirektifler http'den https'ye yönlendirmeyi daha iyi yapar. Stefan'ın aşağıdaki yorumuna bakın ve Apache belgelerinin bu bölümünü kontrol edin: httpd.apache.org/docs/current/rewrite/avoid.html#redirect
Gondy

7

Biri diğerinden daha mı iyi?

Apache şimdi kullanılmasını önermektedir Redirectgelen mod_aliaskullanmak yerine RewriteRulegelen mod_rewrite. Bkz. Https://httpd.apache.org/docs/current/rewrite/avoid.html#redirect , diyor ki:

mod_rewrite, diğer alternatifler istendiğinde son çare olarak düşünülmelidir. Daha basit alternatifler olduğunda kullanmak, kafa karıştırıcı, kırılgan ve bakımı zor yapılandırmalara yol açar.


5

Arama motorları kalıcı bir yönlendirme görecek ve dizinlerini buna göre güncelleyecektir.


> Biri diğerinden daha mı iyi?
Stefan Lasiewski
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.