Khởi tạo VPS trong 60 giây · Hoàn tiền trong 7 ngày · Hỗ trợ kỹ thuật 24/7
Bitech Bitech
Hướng dẫn

Hướng Dẫn Cấu Hình Quy Tắc Rewrite URL Trong Nginx Chi Tiết

Tìm hiểu cách sử dụng các chỉ thị return, rewrite, biểu thức chính quy (regex) và cờ chuyển hướng để tối ưu hóa URL và điều hướng HTTPS trên Nginx.

Việc ghi lại đường dẫn (URL Rewrite) là một trong những tính năng quan trọng của Nginx giúp tối ưu hóa SEO, thay đổi cấu trúc URL thân thiện hơn với người dùng, cũng như thực hiện các chuyển hướng HTTP/HTTPS hiệu quả.

Trong bài viết này, Bitech sẽ hướng dẫn bạn chi tiết các cấu hình Rewrite URL phổ biến trong Nginx thông qua các ví dụ thực tế.

1. Sử dụng chỉ thị return cho việc chuyển hướng đơn giản

Chỉ thị return là phương pháp đơn giản và tối ưu hiệu năng nhất khi bạn muốn chuyển hướng toàn bộ hoặc một phần truy cập sang URL mới (ví dụ: chuyển hướng HTTP sang HTTPS hoặc đổi tên miền).

Ví dụ chuyển hướng toàn bộ trang web sang HTTPS (Mã 301):

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}
  • 301: Chuyển hướng vĩnh viễn (Permanent Redirect).
  • $request_uri: Giữ nguyên đường dẫn gốc phía sau tên miền.

2. Cú pháp và cách sử dụng chỉ thị rewrite

Khi cần tùy chỉnh URL phức tạp hơn dựa trên biểu thức chính quy (Regex), bạn nên sử dụng chỉ thị rewrite.

Cú pháp cơ bản:

rewrite regex replacement [flag];

Ví dụ ghi lại URL từ trang động thành trang tĩnh:

Giả sử bạn muốn biến URL http://example.com/user/123 thành http://example.com/user.php?id=123 ở phía máy chủ:

location /user {
    rewrite ^/user/([0-9]+)$ /user.php?id=$1 last;
}

Trong đó:

  • ^/user/([0-9]+)$: Chuỗi Regex để bắt các ID dạng số.
  • $1: Giá trị lấy từ nhóm đóng ngoặc đơn đầu tiên trong Regex.
  • last: Cờ (flag) báo hiệu cho Nginx dừng xử lý chuỗi rewrite hiện tại và tìm kiếm location mới khớp với URL vừa biến đổi.

3. Các cờ (Flags) phổ biến trong Nginx Rewrite

Khi cấu hình rewrite, việc lựa chọn cờ phù hợp rất quan trọng để tránh vòng lặp vô tận (infinite loops):

  • last: Dừng xử lý tập hợp quy tắc rewrite hiện tại và tìm kiếm location phù hợp với URL mới.
  • break: Dừng hoàn toàn việc xử lý các quy tắc rewrite tiếp theo trong block hiện tại, giữ nguyên URL mới để xử lý tiếp.
  • redirect: Trả về chuyển hướng tạm thời mã HTTP 302.
  • permanent: Trả về chuyển hướng vĩnh viễn mã HTTP 301.

4. Ví dụ chuyển hướng cấu trúc thư mục cũ sang mới

Nếu bạn nâng cấp website và muốn chuyển toàn bộ tài nguyên từ thư mục /blog-old/ sang /blog/ mà vẫn giữ nguyên tham số:

location /blog-old/ {
    rewrite ^/blog-old/(.*)$ /blog/$1 permanent;
}

5. Kiểm tra và áp dụng cấu hình Nginx

Sau khi chỉnh sửa tập tin cấu hình (thường nằm tại /etc/nginx/sites-available/ hoặc /etc/nginx/nginx.conf), bạn cần kiểm tra cú pháp trước khi khởi động lại dịch vụ:

  1. Kiểm tra lỗi cấu hình:
sudo nginx -t
  1. Nếu màn hình hiển thị syntax is ok, tiến hành tải lại Nginx để áp dụng thay đổi:
sudo systemctl reload nginx

Hi vọng hướng dẫn trên giúp bạn nắm vững cách cấu hình Rewrite URL trên Nginx để quản lý lưu lượng truy cập website một cách linh hoạt và an toàn.


Ngày phát hành: 12/05/2026
Nguồn: www.digitalocean.com