Bài viết hôm nay sẽ trình bày một số cấu hình thường gặp trong tập tin .htaccess, một tập tin cấu hình quan trọng cho máy chủ web Apache. .htaccess cho phép bạn điều chỉnh các thiết lập máy chủ Apache mà không cần phải chỉnh sửa các tập tin cấu hình chính của máy chủ.
Việc sử dụng cấu hình trong .htaccess giúp cho quản trị viên máy chủ có thể dễ dàng quản lý các thiết lập và cấu hình cho mỗi website mà không cần phải chỉnh sửa tập tin cấu hình chính của máy chủ.
Trong bài viết này, chúng ta sẽ tìm hiểu một số cấu hình .htaccess thường sử dụng nhằm giúp cho quản trị viên máy chủ có thể dễ dàng quản lý các thiết lập cho website của họ.
1. Cấu hình .htaccess mặc định
Đối với website sử dụng WordPress gặp lỗi 404. Sử dụng mẫu cấu hình bên dưới sẽ hoạt động ngay.
# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
2. Cấu hình chuyển hướng HTTP sang HTTPS với .htaccess
Khi web đã có SSL nhưng truy cập vẫn hiện thông báo HTTP. Sử dụng cấu hình sau để buộc chuyển hướng HTTP sang HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
3. Cấu hình chuyển hướng WWW sang NO-WWW
Đối với website đang sử dụng WWW để bỏ WWW khi truy cập sử dụng đoạn cấu hình sau để loại bỏ.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]
RewriteRule ^(.*)$ https://yourdomain.com/$1 [L,R=301]
4. Cấu hình chuyển hướng NO-WWW sang WWW
Đối với website không sử dụng WWW và muốn có WWW khi truy cập hãy sử dụng đoạn sau để bật.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]
5. Cấu hình chuyển hướng 301
- Web cũ: Website A
- Web mới: Website B
Khi bạn thay đổi tên miền A sang B và muốn cấu hình chuyển hướng toàn bộ các link, sản phẩm, permalink.. Bạn hãy sử dụng cấu hình sau để chuyển hướng. Và cấu hình này được cấp hình ở website A.
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://domain-moi.com/$1 [R=301,L]
6. Bỏ qua giá trị timeout
Cấu hình này phải đặt trên cùng của file .htaccess
RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]
<IfModule Litespeed>
SetEnv noabort 1
</IfModule>
7. Cấu hình chặn HTTP USER AGENT
Nếu website bạn khi các user agent xấu request làm nghẽn server, bạn có thể sử dụng cấu hình sau để ngăn chặn.
![Một số cấu hình .htaccess thường sử dụng 4 chan USER AGENT](https://dangngocson.com/wp-content/uploads/2024/05/chan-user-agent-1024x193-1.jpeg)
RewriteCond %{HTTP_USER_AGENT} "=Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
RewriteRule .* - [F]
8. Cấu hình ngăn chặn lấy cắp ảnh
Cấu hình này để ngăn chặn các website khác get link ảnh của bạn về sử dụng.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?tenmien1.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?tenmien2.com [NC]
RewriteRule .(jpg|jpeg|png|gif)$ – [NC,F,L]
9. Cấu hình chặn xmlrpc.php
XMLRPC.PHP là một tính năng quan trọng trong truyền tải dữ liệu WordPress từ xa. Những năm trở lại đây, file XMLRPC.PHP bị lạm dụng và hình thành một lỗ hổng bảo mật rất lớn. Vì vậy sử dụng lệnh sau để ngăn chặn
RewriteRule xmlrpc - [F,L]
- Hoặc
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
10. Cấu hình cho phép IP và chặn IP
- Cho phép IP truy cập
allow from 11.22.33.44
- Chặn IP truy cập
deny from 11.22.33.44
11. Tăng các giá trị tham số PHP
Để tăng các giá trị PHP lên cao hơn so với mặc định được set ở máy chủ. Bạn có thể sử dụng các cấu hình sau để tăng.
php_value upload_max_filesize 512M
php_value post_max_size 512M
php_value memory_limit 512M
php_value max_execution_time 300
php_value max_input_time 300
12. Vô hiệu thực thi các file .php
Tạo file .htaccess
và thêm giá trị sau vào file, file nằm ở vị trí thư mục nào sẽ áp dụng riêng cho vị trí thư mục đó.
<Files *.php>
deny from all
</Files>
13. Disabling Indexes
Nếu một số folder của bạn không chứa file index.html hay index.php, … ví dụ như folder images chỉ chứa hình, thì khi đó nếu người dùng gõ lên trình duyệt đường dẫn này, ví dụ như https://examples.com/images/
thì tất cả nội dung bên trong thư mục này sẽ hiển thị ra ngoài trình duyệt, khi đó sẽ có nhiều file không mong muốn sẽ bị người dùng thấy được.
![Một số cấu hình .htaccess thường sử dụng 5 CleanShot 2023 02 11 at 19.05.06](https://dangngocson.com/wp-content/uploads/2024/05/cleanshot-2023-02-11-at-19-05-06.png)
Nếu là folder liên quan đến các file xử lý thì vấn đề bảo mật sẽ ảnh hưởng nghiêm trọng. Để ngăn chặn việc này ta có thể sử dụng .htaccess điều hướng hoặc hiển thị thông báo lỗi khi truy cập tới folder không chứa file index, việc này thực hiện rất đơn giản như sau:
Options -Indexes
14. Đặt password cho thư mục và file
Trong một số trường hợp bạn muốn đặt mật khẩu cho file và thư mục, tránh sự truy cập trái phép của người khác bạn có thể dùng file .htaccess và gõ mã lệnh như sau
#Đặt Pass cho thư mục
AuthType basic
AuthName "Thư mục này đã được bảo vệ"
AuthUserFile /home/path/.htpasswd
AuthGroupFile /dev/null
Require valid-user
# Đặt Pass cho file
<files secure.php="">
AuthType Basic
AuthName "Prompt"
AuthUserFile /home/path/.htpasswd
Require valid-user
</files>
Tổng kết
Trong bài viết, chúng ta đã tìm hiểu một số cấu hình .htaccess thường sử dụng trong quản lý website. Chúng ta đã tìm hiểu các cấu hình về việc bảo mật website, định tuyến URL, cấu hình chế độ cache, và một số cấu hình khác.
Việc sử dụng .htaccess là một phần quan trọng trong quản lý và bảo mật website. Chúng ta nên tìm hiểu và sử dụng các cấu hình .htaccess để đảm bảo website hoạt động một cách an toàn và tốt nhất.
Tổng kết, bài viết này đã cung cấp cho chúng ta một cái nhìn tổng quan về các cấu hình .htaccess thường sử dụng và cách sử dụng chúng để tối ưu hóa việc quản lý và bảo mật website của chúng ta.
Nếu bạn cần thêm cấu hình khác hãy để lại bình luận bên dưới để mình kịp thời cập nhật nhé.