Tìm hiểu file .htaccess
File .htaccess dùng thay đổi cấu hình máy chủ chạy Apache. Nó ảnh hưởng toàn bộ file/thư mục bên trong thư mục chứa nó. htaccess viết tắt của hypertext access
htaccess là gì
.htaccess
(hypertext access) là file dùng để thay đổi cấu hình trên các máy chủ (Web Server) chạy Apache.
.htaccess
rất mạnh mẽ, kiểm soát cấu hình cấp cao của trang web. Nó thực hiện các thay đổi cấu hình trang web của mình mà không cần phải chỉnh sửa file cấu hình server.
.htaccess
có thể bật/tắt các tính năng mà máy chủ chạy Apache cung cấp, có thể là: chuyển hướng URL, rút ngắn URL, kiểm soát truy cập (cho phép hay ngăn chặn, …), …
.htaccess
không phải là định dạng file mà là một tên file, và không nên thay đổi thành tên khác.
.htaccess
có phạm vi ảnh hưởng với toàn bộ file/thư mục bên trong thư mục chứa nó, với những thư mục bên ngoài nếu muốn bị ảnh hưởng thì bạn phải khai báo.
Có thể tạo file này bằng cách sử dụng các công cụ editor sau đó save lại với tên file .htaccess
Phải thận trọng khi thay đổi nội dung file .htaccess, nếu sai nó sẽ ảnh hưởng toàn bộ trang web, hoặc báo lỗi.
Khi thao tác với .htaccess
, nếu chỉnh code mà nội dung không thấy được cập nhật mới, thì nên clear cache hoặc test bằng trình duyệt khác, hoặc trình duyệt ẩn danh.
Ví dụ cơ bản về htaccess
order allow,deny deny from 210.165.23.15 allow from all
Đoạn code trên được hiểu là cho phép tất cả truy cập, trừ ip 210.165.23.15
Flag trong htaccess
RewriteRule pattern target [Flag1,Flag2,Flag3]
pattern: Mẫu cần xử lý target: Mục tiêu hướng tới
Flag1,Flag2,Flag3 theo quy định dưới đây.
# – Comment (Viết comment)
[C] – Chain (Sẽ thực thi rule cùng lúc với rule tiếp theo nếu match, ngược lại sẽ bỏ qua rule tiếp theo.)
[CO] – Cookie (Flag [C] hay [cookie] Cho phép xét cookie tùy theo điều kiện RewriteRule.
Đoạn code sau sẽ set cookie cho trang web theo đường dẫn tương ứng)
RewriteEngine On RewriteRule "^/index\.html" "-" [CO=cookiename:yes:.example.com:1440:/]
[E] – Env (Flag [E] hay env Cho phép thiết lập cho biến môi trường, có thể thiết lập trực tiếp với [E=biến:giá trị]
hoặc [E=!biến]
.
Đoạn code sau sẽ set biến môi trường image
với giá trị là 1
nếu request URI là một image, sau đó các biến này sẽ không được dùng trong access_log)
RewriteRule "\.(png|gif|jpg)$" "-" [E=image:1] CustomLog "logs/access_log" combined env=!image
RewriteRule "(.*\.(jpg|gif|png))$" "http://example.com$1" [P,NC]
CÓ THỂ BẠN QUAN TÂM