Hướng dẫn redirect đường dẫn trong Nginx


Nginx là máy chủ Web Server ngày càng được sử dụng phổ biến. Nó hỗ trợ rất nhiều tùy chọn chuyển hướng / redirect đường dẫn website, và nếu bạn có nhu cầu chuyển hướng đường dẫn trong Nginx thì hãy tham khảo các phương án dưới đây để chọn cách phù hợp nhất.

Redirect đường dẫn trong Nginx

Chúng ta cần sửa file config Virtual Hosts của Nginx, thường được đặt trong thư mục /etc/nginx/sites-available

server {
    ...
    location ... {
        ...
        return ...
        ...
    }
    ...
}

Đặt đoạn location để điều hướng đường dẫn vào trong cụm server { … }

Dưới đây là 1 số ví dụ về redirect đường dẫn trong Nginx

Redirect đường dẫn đơn

Giả sử chúng ta cần redirect đường dẫn đơn từ path-1 tới path-2:

https://vinasupport.com/path-1/ => https://vinasupport.com/path-2/

location = /path-1/ {
    return 301 /path-2/;
}
  • Sử dụng 301 để báo cho các công cụ tìm kiếm là bạn chuyển hướng đường dẫn vĩnh viễn
  • Sử dụng 302 để báo cho các công cụ tìm kiếm là bạn chuyển hướng đường dẫn tạm thời

Redirect sử dụng Regular Expression

Giả sử đường dẫn của chúng ta có quy luật như sau:

Vậy với dường dẫn có quy luật như vậy chúng ta hãy thử:

server {
    ...
    rewrite ^/lap-trinh/(.*)/$ https://vinasupport.com/$1/ permanent;
}

Redirect sử dụng maps

Sử dụng để redirect nhiều dường dẫn 1 lúc, nó sẽ giúp bạn làm gọn đoạn config thay vì cứ phải đặt nhiều location vào:

map $request_uri $redirect_uri {
    /lap-trinh/python/          /python/;
    /lap-trinh/java/      /java/;
    /lap-trinh/php/       /php/;
}

server {
    ...
    if ( $redirect_uri ) {
        return 301 $redirect_uri;
    }
}

 

Redirect www tới non-www

Nếu đường dẫn domain của bạn có www, ví dụ: www.vinasupport.com. Thì google sẽ hiểu đó là 1 sub của domain vinasuport.com. Vì vậy, để seo tốt hơn chúng ta nên thực hiện redirect từ www về non-www

https://www.vinasupport.com/ => https://vinasupport.com/

Tạo 1 cụm server khác có nội dung:

server {
        listen 80;
        server_name www.vinasupport.com;
        return 301 https://vinasupport.com$request_uri;
}

Redirect tới trang lỗi HTTP (404, 503)

Trường hợp bạn muốn redirect những đường dẫn không mong muốn người dùng truy cập. Ví dụ không muốn người dùng truy cập tới website của bạn thông qua địa chỉ IP thì hãy sử dụng đoạn config redirect sau:

https://192.168.1.100/ => 404 Error Page

server {
        listen 80;
        server_name 192.168.1.100;
        return 404;
}

Redirect từ HTTP tới HTTPS

SSL ngày càng phổ biến, và Google cũng đã khuyến khích sử dụng đường dẫn HTTPS thay thế cho HTTP. Vì vậy chúng ta thực hiện redirect từ HTTP sang HTTPS trong Nginx như sau:

http://vinasupport.com/* => https://vinasupport.com/*

server {
        listen 80;
        server_name _;
        return 301 $host$request_uri;
}

Hoặc chỉ định trực tiếp tên miền:

server {
        listen 80;
        server_name _;
        return 301 https://vinasupport.com$request_uri;
}

Một số biến nên biết khi config Nginx Server

  • $scheme: HTTP Scheme của truy vấn. Ví dụ: “http” hoặc “https
  • $host: Hostname mà người dùng truy cập
  • $server_name: Tên server
  • $request_uri: Đường dẫn đầy đủ của truy vấn bao gồm cả các tham số trên dường dẫn
  • $request_filename: Dường dẫn file truy cập. Ví dụ: index.php

 

Nguồn: vinasupport.com

             
SHARE

Bài viết liên quan

Có 1 bình luận trong bài viết “Hướng dẫn redirect đường dẫn trong Nginx”

  1. Phong Nguyen

    trong ngix làm sao direct dc link .html sang dạng có dấu / bác

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web