Thứ tư, 11/07/2012 | 00:00 GMT+7

Cách thiết lập Mod_Rewrite (trang 2)


Tiếp theo từ Trang 1

Viết lại điều kiện

Ba ví dụ trên trang trước cho thấy cách viết lại các URL để giúp các trang web dễ truy cập và ghi nhớ hơn.

Luật viết lại cũng có thể có các điều kiện đảm bảo rằng việc viết lại chỉ diễn ra trong những trường hợp cụ thể.

Ví dụ 1: Cách ngăn chặn liên kết nóng

Liên kết nóng là quá trình sử dụng hình ảnh hoặc đối tượng từ một server trên một server khác. Hành động này hút băng thông từ server của nạn nhân và từ chối người tạo ra đối tượng bất kỳ khách truy cập bổ sung nào vào trang web của họ mà họ có thể đã đạt được nếu không.

Bạn có thể ngăn chặn liên kết nóng bằng cách chuyển hướng tất cả các liên kết đến một đối tượng trên trang web của bạn đến một số hình ảnh kém đẹp mắt khác hoặc bằng cách cấm hoàn toàn hoạt động.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$ [NC]
RewriteRule .*\.(gif|jpeg|png)$ http://www.example.com/unpleasantness.jpg [R,NC,L]

Bây giờ để được giải thích:

  • % {HTTP_REFERER}: điều này đề cập đến lưu lượng truy cập đến từ đâu. Dấu phần trăm cho biết nó là một biến apache.
  • !: dấu chấm than phủ định mẫu theo sau nó. Trên thực tế, điều này cho biết bất cứ điều gì theo sau nó không thuộc các điều kiện bắt buộc để bị ảnh hưởng bởi luật viết lại.
  • ^ $: Như đã đề cập trước đó, dấu mũ tượng trưng cho phần đầu của một chuỗi và dấu đô la cho phần cuối của nó. Trong trường hợp này, không có gì giữa chúng và do đó liên kết giới thiệu không tồn tại. Nói cách khác, dòng này nói rằng các liên kết trực tiếp không bị ảnh hưởng bởi luật viết lại.
  • Điều kiện thứ hai tham chiếu đến liên kết giới thiệu .
  • ! ^ http: // (www \.)? example \ .com /.*$: dấu chấm than cho biết rằng liên kết giới thiệu không được là trang web của chính ta
  • Cuối cùng, ta đi đến luật viết lại chính nó nói rằng bất kỳ liên kết nào đến file kết thúc bằng phần mở rộng gif, jpeg hoặc png sẽ được chuyển hướng đến một số hình ảnh khó chịu để dạy cho hotlinker một bài học. Nếu ta chỉ muốn cấm họ truy cập vào bất kỳ hình ảnh nào, ta có thể thực hiện một chỉnh sửa nhỏ đối với Luật viết lại ở dòng cuối cùng. Thay vì cung cấp một điểm đến thay thế, như dòng này, thay vào đó, bạn có thể chỉ gửi đoạn viết lại đến một trang bị cấm:
    RewriteRule .*\.(gif|jpeg|png)$ - [F]

Ví dụ 2: Cách thêm www vào URL

Một thủ thuật hữu ích khác mà mod_rewrite có thể làm là thêm www vào domain . Mặc dù mọi người dễ dàng thấy example.com và www.example.com là cùng một trang web, nhưng các công cụ tìm kiếm đăng ký chúng là trùng lặp, làm ảnh hưởng đến thứ hạng của họ.

Để giải quyết vấn đề, bạn có thể chọn xóa www một cách nhất quán hoặc luôn thêm www vào URL. Ví dụ này sẽ chỉ ra cách đảm bảo www luôn được đính kèm.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301]

Bây giờ để được giải thích:

  • % {HTTP_HOST}: điều này đề cập đến trang web trong URL được yêu cầu
  • ^ example.com $: giải thích rằng trang được yêu cầu phải là example.com
  • ^ (. *) $: Luật viết lại cho biết rằng bất kỳ văn bản nào sau đó đều có thể tuân theo domain .
  • [R = 301]: Cờ biểu thị rằng URL đang được chuyển hướng và 301 cho biết đây là chuyển hướng vĩnh viễn. Một chiếc tạm thời được chỉ định với số 302.

Mọi thứ sau đó sẽ chuyển đổi từ example.com thành www.example.com

Ví dụ 3: Chặn một địa chỉ IP cụ thể

Đây là một công cụ hữu ích để ngăn chặn, chẳng hạn như các bên độc hại tại các địa chỉ IP cụ thể truy cập vào một trang web.

RewriteCond %{REMOTE_ADDR} ^(12\.34\.56\.789)$
RewriteRule (.*) - [F,L]

Bây giờ để được giải thích:

  • % {REMOTE_ADDR}: Đây là viết tắt của địa chỉ IP mà trang web của ta đang được truy cập và ta muốn chặn.
  • ^ (12 \ .34 \ .56 \ .789) $: Bạn có thể sử dụng phần này để nhập địa chỉ IP độc hại. Lưu ý dấu gạch chéo ngược rất quan trọng. Họ chỉ định các dấu chấm là dấu chấm câu, thay vì sử dụng cụm từ thông dụng tiêu chuẩn làm ký tự đại diện.
  • (. *): Điều này nghĩa là bất kỳ văn bản nào từ IP bị chặn sẽ dẫn đến luật viết lại được hoàn thành.
  • [F, L]: cờ kết thúc luật . [F] cấm truy cập và [L] ngừng áp dụng bất kỳ luật nào khác, biến nó thành luật cuối cùng.

Tài nguyên

Các phần trước đã là tổng quan cơ bản về các khả năng của Mod_Rewrite.

Chủ đề khá rộng và có nhiều sắc thái có thể làm cho nó trở thành một công cụ rất hữu ích và linh hoạt.

Dưới đây là một số liên kết để biết thêm thông tin về Mod_Rewrite:

Bởi Etel Sverdlov

Tags:

Các tin liên quan