Різниця між "Перенаправляти постійну" проти mod_rewrite RewriteRule


9

Це сервер 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. Чи один кращий, ніж інший?

Відповіді:


8

За замовчуванням mod_rewrite робить "302 знайдених" переспрямувань, які є тимчасовими. Якщо припустити, що все інше рівне, Redirect permanentрівнозначно RewriteRule <blah> [R=permanent].


Насправді ні, Redirectдиректива обробляє переадресацію краще з http на https. Дивіться коментар Стефана нижче і перегляньте цей розділ документації Apache: httpd.apache.org/docs/current/rewrite/avoid.html#redirect
Гонді

7

Чи один кращий, ніж інший?

Зараз Apache рекомендує використовувати Redirectз, mod_aliasа не RewriteRuleз mod_rewrite. Дивіться https://httpd.apache.org/docs/current/rewrite/avoid.html#redirect , де сказано:

mod_rewrite слід вважати крайнім заходом, коли інші альтернативи бажають. Використання його, коли є більш прості альтернативи, призводить до конфігурацій, які заплутані, тендітні та важкі в обслуговуванні.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.