Sự khác biệt giữa Dịch chuyển trực tiếp chuyển hướng trực tiếp và so với mod_rewrite RewriteRule


9

Đây là một máy chủ Apache httpd 2.2.

Chúng tôi yêu cầu quyền truy cập vào máy chủ web này phải được mã hóa bằng HTTPS.

Khi khách hàng truy cập trang web của tôi tại http://www.example.org/ $ foo (cổng 80), tôi muốn chuyển hướng yêu cầu của họ đến trang web được mã hóa HTTPS tại https://www.example.org/ $ foo.

Dường như có hai cách phổ biến để làm điều này:

Phương thức đầu tiên sử dụng chỉ thị ' Redirect ' từ mod_alias:

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

Phương thức thứ hai sử dụng mod_rewrite:

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

Sự khác biệt giữa "Chuyển hướng vĩnh viễn" và khổ thơ mod_rewrite là gì. Là cái tốt hơn cái kia?

Câu trả lời:


8

Theo mặc định, mod_rewrite không chuyển hướng "302 Found", tạm thời. Giả sử mọi thứ khác đều bằng nhau, Redirect permanenttương đương với RewriteRule <blah> [R=permanent].


Trên thực tế không, Redirectchỉ thị xử lý chuyển hướng từ http sang https tốt hơn. Xem bình luận của Stefan dưới đây và kiểm tra phần này của tài liệu Apache: httpd.apache.org/docs/current/rewrite/avoid.html#redirect
Gondy

7

Là cái tốt hơn cái kia?

Apache hiện khuyến nghị sử dụng Redirecttừ mod_aliasthay vì sử dụng RewriteRuletừ mod_rewrite. Xem https://httpd.apache.org/docs/civerse/rewrite/avoid.html#redirect , cho biết:

mod_rewrite nên được coi là giải pháp cuối cùng, khi các phương án khác được tìm thấy muốn. Sử dụng nó khi có các lựa chọn thay thế đơn giản hơn dẫn đến các cấu hình khó hiểu, dễ vỡ và khó bảo trì.


5

Các công cụ tìm kiếm sẽ thấy một chuyển hướng vĩnh viễn và cập nhật các chỉ mục của họ cho phù hợp.


> Cái này tốt hơn cái kia?
Stefan Lasiewski
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.