Это сервер Apache httpd 2.2.
Мы требуем, чтобы доступ к этому веб-серверу был зашифрован по протоколу HTTPS.
Когда веб-клиенты посещают мой сайт по адресу http://www.example.org/$ foo (порт 80), я хочу перенаправить их запрос на зашифрованный HTTPS-сайт по адресу https://www.example.org/$ foo.
Кажется, есть два распространенных способа сделать это:
Первый метод использует 'Перенаправить'директива из mod_alias:
<VirtualHost *:80>
Redirect permanent / https://www.example.org/
</VirtualHost>
Второй метод использует mod_rewrite:
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
В чем разница между разделом «Постоянное перенаправление» и строфой mod_rewrite. Одно лучше другого?
По умолчанию mod_rewrite выполняет перенаправление «302 Найдено», которые являются временными. Если все остальное равно, Redirect permanent
эквивалентно RewriteRule <blah> [R=permanent]
.
Одно лучше другого?
Apache теперь рекомендует использовать Redirect
из mod_alias
Вместо того, чтобы использовать RewriteRule
из mod_rewrite
. Видеть https://httpd.apache.org/docs/current/rewrite/avoid.html#redirect , в котором говорится:
mod_rewrite следует рассматривать в крайнем случае, когда не хватает других альтернатив. Использование его, когда есть более простые альтернативы, приводит к запутанным, хрупким и сложным в обслуживании конфигурациям.
Поисковые системы увидят постоянное перенаправление и соответственно обновят свои индексы.