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
trong ngix làm sao direct dc link .html sang dạng có dấu / bác