Cách dùng Redirect 301 trong .htaccess

.htaccess và cách redirect 301

Dưới đây là hướng dẫn chi tiết cách sử dụng Redirect 301 trong file .htaccess trên máy chủ Apache. File .htaccess là một công cụ mạnh mẽ cho phép bạn thực hiện nhiều thao tác cấu hình cho website của mình, bao gồm cả việc chuyển hướng (redirect) URL. Hãy chắc chắn rằng máy chủ của bạn đang chạy Apache và đã bật module mod_rewrite.

Lưu Ý: Trước khi thực hiện bất kỳ thay đổi nào trên file .htaccess, hãy sao lưu file hiện tại để phòng trường hợp cần khôi phục lại.


1. Kích Hoạt mod_rewrite Trên Apache

Trước tiên, bạn cần đảm bảo rằng module mod_rewrite đã được kích hoạt trên máy chủ Apache của bạn.

Bước 1: Kích Hoạt mod_rewrite

Trên hệ thống Linux, bạn có thể kích hoạt mod_rewrite bằng lệnh sau:

sudo a2enmod rewrite

Bước 2: Cho Phép Overrides Trong Cấu Hình Apache

Mở file cấu hình của Apache (thường là /etc/apache2/apache2.conf hoặc /etc/httpd/conf/httpd.conf tùy vào hệ điều hành) và đảm bảo rằng bạn đã cho phép AllowOverride All cho thư mục chứa website của bạn.

Ví dụ:

<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Bước 3: Khởi Động Lại Apache

Sau khi thực hiện các thay đổi, khởi động lại Apache để áp dụng:

sudo systemctl restart apache2

hoặc

sudo systemctl restart httpd

2. Sử Dụng Redirect 301 Trong .htaccess

File .htaccess nằm trong thư mục gốc của website (thường là public_html hoặc www). Bạn có thể chỉnh sửa file này bằng các trình soạn thảo văn bản như Nano, Vim hoặc thông qua File Manager trong cPanel hoặc DirectAdmin.

2.1. Chuyển Hướng Tên Miền

Khi bạn muốn chuyển hướng toàn bộ truy cập từ một tên miền này sang tên miền khác.

Ví dụ: Chuyển hướng từ olddomain.com sang newdomain.com

RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain\.com$ [NC]
RewriteRule ^(.*)$ http://newdomain.com/$1 [R=301,L]

2.2. Chuyển Hướng Thư Mục Website

Khi bạn muốn chuyển hướng mọi trang web nằm trong một thư mục sang một trang web khác.

Ví dụ: Chuyển hướng mọi trang trong thư mục game sang game.php

RewriteEngine On
RewriteRule ^game/(.*)$ /game.php [R=301,L]

2.3. Chuyển Hướng File

Khi bạn muốn chuyển hướng một file cụ thể sang một file mới.

Ví dụ: Chuyển hướng từ old.php sang new.php

Redirect 301 /old.php /new.php

2.4. Chuyển Hướng www và Non-www

Bạn có thể muốn chuyển hướng tên miền có hoặc không có www để đảm bảo nhất quán.

Ví dụ 1: Chuyển hướng từ non-www sang www

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.yourdomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]

Ví dụ 2: Chuyển hướng từ www sang non-www

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.yourdomain\.com$ [NC]
RewriteRule ^(.*)$ http://yourdomain.com/$1 [R=301,L]

2.5. Chuyển Đuôi Mở Rộng Từ .php Sang .html

Bạn có thể muốn chuyển đổi các URL có đuôi .php sang .html để cải thiện SEO hoặc đơn giản là thay đổi cấu trúc URL.

Ví dụ: Chuyển hướng từ page.php sang page.html

RewriteEngine On
RewriteRule ^(.*)\.html$ $1.php [R=301,L]

Lưu Ý: Cách viết này sẽ chuyển hướng từ .html sang .php. Nếu bạn muốn ngược lại (từ .php sang .html), hãy đảo ngược vị trí nguồn và đích.

2.6. Bảo Vệ Tài Nguyên Web (Prevent Hotlinking)

Hotlinking là việc các website khác sử dụng trực tiếp tài nguyên của bạn (hình ảnh, video) mà không có sự cho phép, dẫn đến việc tiêu tốn băng thông của bạn.

Ví dụ: Ngăn chặn các website khác sử dụng hình ảnh từ yourdomain.com

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com/ [NC]
RewriteRule \.(gif|jpg|png|jpeg|bmp|svg)$ - [F,NC]

Giải Thích:

  • RewriteCond %{HTTP_REFERER} !^$: Cho phép truy cập trực tiếp (không có referrer).
  • RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com/ [NC]: Cho phép truy cập từ chính domain của bạn.
  • RewriteRule \.(gif|jpg|png|jpeg|bmp|svg)$ - [F,NC]: Chặn truy cập các định dạng hình ảnh đã chỉ định bằng cách trả về lỗi 403 Forbidden.

3. Kiểm Tra và Xác Nhận Các Redirect 301

Sau khi thực hiện các thay đổi trên file .htaccess, bạn cần kiểm tra để đảm bảo rằng các chuyển hướng đã hoạt động đúng.

Bước 1: Sử Dụng Trình Duyệt

Mở trình duyệt và truy cập vào URL cũ để kiểm tra xem nó có chuyển hướng sang URL mới hay không.

Bước 2: Sử Dụng Công Cụ Trực Tuyến

Bạn có thể sử dụng các công cụ trực tuyến như:

Nhập URL cũ và kiểm tra xem nó có trả về mã trạng thái 301 và chuyển hướng đúng sang URL mới hay không.

Bước 3: Kiểm Tra Log Máy Chủ

Kiểm tra log của máy chủ để xác nhận rằng các yêu cầu đã được chuyển hướng đúng cách.

sudo tail -f /var/log/apache2/access.log

hoặc

sudo tail -f /var/log/httpd/access.log

4. Các Lưu Ý Khi Sử Dụng Redirect 301 Trong .htaccess

  • Sử Dụng Redirect 301 Thận Trọng: Redirect 301 là chuyển hướng vĩnh viễn. Hãy chắc chắn rằng bạn muốn chuyển hướng mãi mãi trước khi sử dụng.
  • Tránh Chuyển Hướng Vòng Lặp: Đảm bảo rằng không có chuyển hướng vòng lặp nào xảy ra, điều này có thể làm chậm website hoặc gây lỗi truy cập.
  • Sao Lưu .htaccess Trước Khi Chỉnh Sửa: Luôn sao lưu file .htaccess trước khi thực hiện bất kỳ thay đổi nào để dễ dàng khôi phục lại nếu có sự cố.
  • Kiểm Tra Các Quy Tắc Redirection: Đảm bảo rằng các quy tắc không xung đột với nhau và hoạt động theo mong muốn.

5. Ví Dụ Thực Tế và Phân Tích

Ví Dụ 1: Chuyển Hướng Từ Non-www Sang www

Mục Đích: Đảm bảo tất cả người dùng truy cập vào phiên bản www của website.

Code:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.yourdomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]

Phân Tích:

  • Nếu người dùng truy cập vào yourdomain.com, họ sẽ được chuyển hướng sang www.yourdomain.com kèm theo đường dẫn cụ thể.

Ví Dụ 2: Ngăn Chặn Hotlinking Hình Ảnh

Mục Đích: Ngăn các website khác sử dụng hình ảnh từ máy chủ của bạn.

Code:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com/ [NC]
RewriteRule \.(gif|jpg|png|jpeg|bmp|svg)$ - [F,NC]

Phân Tích:

  • Các yêu cầu đến các tệp hình ảnh từ các referrer không phải của yourdomain.com sẽ bị chặn với mã lỗi 403 Forbidden.

6. Tổng Kết

File .htaccess là một công cụ mạnh mẽ để quản lý và cấu hình website của bạn trên máy chủ Apache. Việc sử dụng Redirect 301 giúp bạn duy trì SEO, đảm bảo trải nghiệm người dùng tốt hơn khi chuyển hướng các URL cũ sang URL mới một cách hiệu quả. Hãy sử dụng các quy tắc chuyển hướng một cách thận trọng và luôn kiểm tra kỹ lưỡng sau khi thực hiện để đảm bảo rằng mọi thứ hoạt động đúng như mong đợi.

Chúc bạn thành công trong việc tối ưu hóa và quản lý website của mình! Nếu bạn có bất kỳ câu hỏi nào thêm hoặc cần hỗ trợ, đừng ngần ngại liên hệ với bộ phận hỗ trợ kỹ thuật của nhà cung cấp dịch vụ hosting hoặc tham khảo tài liệu chính thức của Apache.

Để lại một bình luậ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 *