htaccess - query string

htaccess - query string

  • Chuỗi truy vấn (query string), là chuỗi có dạng ?tên=giá_trị, hoặc &tên=giá_trị, ví dụ như https://hocwebchuan.com/item.php?id=1.
  • Đôi lúc, khi chuỗi này xuất hiện thì dễ cho người dùng thấy được mục đích của trang web là gì, có khi sẽ lộ thông tin không mong muốn, ví dụ như id của user, hay nội dung nào đó cần bảo mật. Khi này việc che giấu những query string là thật sự cần thiết.

Loại bỏ query string theo tên

  • Ví dụ ta có đường dẫn sau: https://hocwebchuan.com/?product_id=1, ta sẽ sử dụng .htaccess để loại bỏ ?product_id=1, ta làm như sau:
RewriteCond %{QUERY_STRING} "e;product_id="e; [NC]
RewriteRule (.*) /$1? [R=301,L]
  • %{QUERY_STRING} "e;product_id="e; [NC] xác định điều kiện query string là product_id=, không phân biệt chữ hoa hay chữ thường.
  • (.*) /$1? [R=301,L] viết lại đường dẫn mới, áp dụng cho tất cả các đường dẫn.
  • Cách viết trên sẽ thay đổi đường dẫn thành https://hocwebchuan.com/, tuy thay đổi những vẫn không làm ảnh hưởng tới các giá trị truyền cho product_id.

Loại bỏ tất cả query string

  • Cách làm này ta không cần quan tâm tên của query string là gì, ta làm như sau:
RewriteCond %{QUERY_STRING} ^[A-Z]+ /.*\ HTTP
RewriteCond %{QUERY_STRING} !^$
RewriteRule (.*) https://hocwebchuan.com%{REQUEST_URI}? [R=301,L]

query string - tạo đường dẫn thân thiện

  • Giả sử ta có đường dẫn sau https://hocwebchuan.com/list/index.php?category=mobile&item=iphone, ta thấy đường dẫn này thiệt rắc rối, và muốn thay đổi nó thành https://hocwebchuan.com/product/mobile/iphone cho dễ nhìn (thân thiện với người dùng hơn), ta có thể làm như sau:
RewriteEngine On
RewriteRule ^product/(.+)/(.+)$ list/?category=$1&item=$2 [L]
  • Đổi tên list thành product, tùy vào việc bạn có muốn đổi hay không.
  • /(.+)/(.+) sẽ đại diện cho $1$2.
  • Khi này gõ lên trình duyệt nội dung https://hocwebchuan.com/product/mobile/iphone thì sẽ nhận được giao diện tương tự như ban đầu.