Kỹ thuật viết lại đường dẫn url thân thiện – Rewrite URL với file .htaccess

Trang chủ Web Development Chuyện Nghề Kỹ thuật viết lại đường dẫn url thân thiện – Rewrite URL với file .htaccess
Kỹ thuật viết lại đường dẫn url thân thiện – Rewrite URL với file .htaccess
Phan Sang 15/08/17 295 Web Development Chuy

Việc đưa các từ khóa vào đường dẫn của trang web có tác dụng SEO rất tốt , ở phần viết lại đường dẫn Url cho website này chúng ta sẽ bắt gặp những chuỗi, biểu thức Regular Expression.

File .htaccess là gì, đơn giản nó chỉ là một file cấu hình máy chủ apache trên server chứa website của bạn, các bạn có thể dùng editor bất kỳ tạo ra một file có đuôi mở rộng là .htaccess, file này không có tên các bạn nhé. Sau đó lưu vào thư mục root của website ( root là folder web của bạn, file .htaccess ngang hàng với index.php )

Để sử dụng được tính năng rewrite url này các bạn nhớ bật mod rewrite lên.

– File .htaccess, để bắt đầu rewrite, dòng lệnh đầu tiên trong file .htaccess

 

RewriteEngine On

Dòng lệnh RewriteEngine On cho apache biết ta đang bắt đầu rewrite url, sau khi đã khai báo RewriteEngine On thì chúng ta có thể bắt đầu quy ước các url theo ý của mình.

Khi các bạn rewrite lại url thì lúc này bạn sẽ có 2 url là url cũ và url mới, cái mà bạn mới viết lại đường dẫn là url ảo và url cũ là url thật. Khi nhập vào trình duyệt url ảo thì tự động apache sẽ đọc file .htaccess và so sánh với url thực sau đó sẽ chuyển đến trang đích.

– Quy ước các url

Để bắt đầu rewrite url mới trong htaccess ta sử dụng hàm RewriteRule

RewriteRule "url_ảo" "url_thực"

Ví dụ

RewriteRule "^([a-zA-Z0-9+]).html$ index.php?page_layout=$1"

Đường dẫn index.php?page_layout=dich-vu  được chuyển sang dich-vu.html

1. .htaccess là gì?

File .htaccess (hypertext access) của Apache là một file cấu hình sử dụng cho các web server chạy Apache, có tác dụng trên thư mục hiện hành và tất cả các thư mục con. Đồng thời .htaccess dùng để thiết lập các tùy chọn: thực thi hay loại bỏ các chức năng, tính năng của Apache. Vì vậy, để quản lí truy cập vào website của mình, đơn giản bạn chỉ việc soạn thảo một file .htaccess, và lưu nó vào thư mục root của website.

2. Những chú ý quan trọng

  • Một lỗi cú pháp nhỏ (thậm chí là một khoản trắng) trong cấu hình .htaccess cũng khiến website của bạn hoạt động không được bình thường như trước.
  • Do vậy trước khi điều chỉnh .htaccess, bạn nên backup cẩn thận dữ liệu, nếu có trục trặc xảy ra, việc khôi phục trở nên đơn giản.
  • Bạn phải đảm bảo file này được ấn định một mức độ bảo mật nhất định, tránh những truy cập bất hợp pháp từ bên ngoài (xem, sửa, xóa) những thông tin cấu hình này. Để làm được như vậy, bạn nên chmod file.htaccess là 644, về chmod bạn có thể tìm hiểu ở nhiều tài liệu ngoài Internet.
  • Trường hợp bạn không có quyền cấu hình trên httpd.conf của Apache thì việc sử dụng .htaccess rất hữu ích cho nhu cầu của bạn.

3. Công dụng phổ biến

  • Authorization, authentication
  • Rewrite URLs
  • Blocking
  • SSI
  • MIME types
  • Tùy chỉnh Error Page
  • Kiểm soát Cache

4. Ưu điểm

  • Thực thi ngay lập tức: Vì htaccess được đọc trên mọi yêu cầu , những thay đổi được thực hiện trong những tập tin này có hiệu lực ngay lập tức – như trái ngược với các tập tin cấu hình chính mà đòi hỏi các máy chủ được khởi động lại để các thiết lập mới có hiệu lực.
  • Hỗ trợ người dùng không có đặc quyền: cho phép người dùng cá nhân có khả năng thay đổi cấu hình trang web của họ trong khi các tập tin cấu hình máy chủ chính không cần phải được thay đổi

5. Nhược điểm

  • Giảm hiệu suất: cụ thể, khi được cấu hình để sử dụng .htaccess, thì Apache sẽ tìm kiếm tất cả những folder có chứa .htaccess để thực thi, và nó sẽ thực thi tất cả những file .htaccess tìm được. Do vậy, sẽ làm website của bạn trở nên ì ạch một cách không cần thiết.
  • Bảo mật: việc cho phép người dùng cá nhân thay đổi cấu hình của một máy chủ có thể gây ra vấn đề liên quan đến bảo mật nếu không được thiết lập đúng cách.

6  Ý nghĩa ký hiệu định nghĩa trong .htaccess

# : cho phép server bỏ qua dòng này.
[F] : Forbidden, hướng dẫn server trả về lỗi 403 cho client.
[L] : Last rule, hướng dẫn server ngừng ghi lại sau khi một chỉ thị đã được xử lý.
[N] : Next, chỉ dẫn cho Apache trả về luật rewrite cho tới khi tất cả các chỉ thị rewriteđược hoàn tất.
[G] : Gone, chỉ dẫn server chuyển thông điệp Gone.
[P] : Proxy, chỉ dẫn server sử dụng các request cung cấp bởi mod_proxy.
[C] : Chain, chỉ dẫn server gắn luật trước với luật sau nó.
[R] : Redirect, hướng dẫn Apache đưa ra một chuyển hướng.
[NC] : No case, xác định bất cứ trường hợp nào liên quan tới nó là vô lý (Không thể xảy ra).
[PT] : Pas Through: chỉ dẫn mod_rewrite để vượt qua cơ chế ghi lại URL cho các xử lý xa hơn.
[OR] : Or, là cú pháp logic bình thường (biểu thức kết hợp đúng khi một trong hai biểu thức con của nó đúng).
[NE] : No Escape: hướng dẫn server lọc đầu ra.
[NS] : No Subresquest: hướng dẫn server giữ chỉ thị nếu là một request con từ bêntrong.
[QSA] : gắn thêm chuỗi truy vấn vào cuối URL.
[S=x] : Skip: chỉ dẫn server dừng lại x luật.
[E=variable :value (http://variablevalue/)]: Environment Variale: chỉ dẫn server thiết lập giá trị tài nguyên.
[T=MIME–type] : Mime Type cho phép website truy xuất nhiều định dạng file.
[] : xác định một tập các ký tự trong đó bất cứ ký tự nào có trong ngoặc xuất hiệnsẽ được match.
[]+ : tập các ký tự trong đó bất cứ kết hợp nào với nó cũng được match.
[a–z] : match với tất cả các ký tự từ a–z, theo bảng chữ cái. Có thể có thêm: [a–zA–Z].
a{n} : xác định số ký tự sẽ mở rộng cùng với ký tự đầu, tức là khi match được ký tự đầu sẽ lấy thêm bao nhiêu ký tự tiếp theo. VD:x{3} sẽ lấy: x’s, xad, …
a{n,} : như a{n} nhưng có thể lấy 3 hoặc nhiều hơn.
a{n,m} : như a{n} nhưng sẽ lấy trong khoảng từ n tới m.
() : nhóm các ký tự lại với nhau, xem chúng như 1 đơn vị đơn lẻ.
^ : ghi chú bắt đầu chuỗi regex.
$ : ghi chú kết thúc chuỗi regex.
? : cho phép chọn lựa ký tự.Ví dụ: monzas? sẽ match với monza hoặc monzas.
! : mô tả một phủ định, sẽ match với tất cả thứ gì khác với các ký tự sau !
. : thể hiện cho bất cứ ký tự đơn nào.
+ : match với một hoặc nhiều ký tự.
* : match với 0 hoặc nhiều ký tự.
| : phép hoặc logic.
\ : thêm vào trước các ký tự đặc biệt để có thể sử dụng chúng như các ký tự bình thường.
.* : không có ký tự nào hoặc nhiều ký tự bất kỳ.
^$ : định nghĩa một chuỗi rỗng.
^.*$ : sử dụng để match mọi thứ.
[^/.] : định nghĩa 1 ký tự là “/” hoặc “.”.
[^/.]+ : định nghĩa bất cứ số lượng ký tự nào chứa “/” hoặc “.”.
http:// : là một chuỗi bình thường.
^domain.* : định nghĩa một chuỗi bắt đầu với “domain”.
^domain\.com$ : xác định sự mở rộng của chuỗi “domain.com”.
–d : kiểm tra nếu chuỗi là một directory.
–f : kiểm tra nếu một chuỗi là một file.
–s : kiểm tra nếu file trong chuỗi kiểm tra có 1 giá trị khác 0.

Thủ Thuật Hay

470 Blog posts

Comments