Chào các bạn, hôm nay mình sẽ hướng dẫn các bạn thực hiện một số cách redirect cơ bản sử dụng file .htaccess của Apache.
File .htaccess là file dùng để quản lý cách mà web server Apache sẽ xử lý các request của website. Các cấu hình bên trong file .htaccess sẽ được “override” các cấu hình trong “httpd.conf” của website đó, vì vậy để htaccess hoạt động được, chúng ta cần phải cho phép “AllowOverride all” tại block config của website đó.
Contents
Redirecting a URL
Redirect file các bạn dùng cấu hình như sau
Redirect /file.html /template/form.html
Redirect từ file tới URL bên ngoài
Redirect /file.html http://google.com
Redirect path đến URL bên ngoài
Redirect /login/ http://123host.vn
Redirect path cũ tới path mới
RewriteRule ^images/(.*)$ /images/archives/$1 [R=301,NC,L]
Redirecting error messages
Các bạn có thể sử dụng .htaccess để cấu hình các trang Error mà Apache trả về như sau
ErrorDocument 404 http://google.com/
ErrorDocument 403 /images/403.gif
Redirect www in the URL
Bạn muốn người dùng truy cập website của bạn tất cả đều có www, các bạn có thể cấu hình như sau
RewriteEngine On RewriteCond %{HTTP_HOST} ^123host.vn RewriteRule (.*) http://www.123host.vn/$1 [R=301,L]
Hoặc bạn muốn redirect ngược lại từ www về non-www
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.123host.vn RewriteRule (.*) http://123host.vn/$1 [R=301,L]
Redirect HTTP to HTTPS for your site
Các bạn vừa cài SSL nhưng website vẫn chưa hiển thị ổ khóa xanh, các bạn cần phải redirect về HTTPS
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Hoặc redirect traffic từ port 80 chuyển sang HTTPS
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.123host.vn/$1 [R=301,L,NE]
Advanced config for .htaccess using Mod_Rewrites
Sau đây là một số cấu hình phức tạp hơn cho .htaccess sử dụng module rewrites của Apache, mỗi cấu hình được sử dụng cho một mục đích cụ thể khác nhau, các bạn có thể tham khảo và sử dụng nếu trường hợp của các bạn yêu cầu nhé
Thay đổi file extension cho 1 URL
Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*)\.txt$ $1.php [L]
Cấu hình redirect trên sẽ redirect tất cả các URL có đuôi là .php sang .txt
Redirect một sub folder sang một custom port
RewriteCond %{SERVER_PORT} !^8080$ RewriteRule ^email_admin/(.*[^/])/?$ http://%{HTTP_HOST}:8080/$1/ [R=301,L]
Cấu hình trên sẽ redirect bất cứ URL nào có path /email_admin đến địa chỉ server chạy port 8080
Load Balancing sử dụng mod_rewrites
RewriteEngine on RewriteMap lb "rnd:/server/serverlist.txt" RewriteRule "^/(.*)" "http://${lb:servers}/$1" [P,L]
nội dung của file /server/serverlist.txt
## serverlist.txt servers one.example.com|two.example.com|three.example.com
Cấu hình trên sẽ giúp bạn Load Balancing random giữa các server trong file serverlist.txt, cách cấu hình này khá giống với việc cấu hình Load Balancing sử dụng Multiple Records DNS cho domain.
Kết luận
Hy vọng với vài mẹo nhỏ trên có thể giúp các bạn tối ưu việc tương tác với website qua URL theo nhu cầu của ứng dụng. Thế giới của mod_rewrites còn vô cùng nhiều cách thức “thiên biến vạn hóa” khác nhau, nếu các bạn có mẹo nào hữu ích có thể chia sẻ trong phần bình luận bên dưới cho chúng mình nhé. Cảm ơn các bạn đã theo dõi bài viết. OKAY, AS ALWAYS, PEACE OUT!
Leave A Comment?