Công cụ tạo .htaccess cho Apache
Tạo quy tắc .htaccess cho Apache: bắt buộc HTTPS, thêm hoặc bỏ www, chuyển hướng 301, trang lỗi, gzip, cache trình duyệt, header bảo mật và chặn tệp ẩn.
Mã có thể là 301, 302, 303, 307, 308 hoặc 410 (đã xóa). Đường dẫn mới có thể là URL đầy đủ.
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirect HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
# Redirects (mod_alias)
Redirect 301 /old-page /new-page
Redirect 301 /blog/2019 /blog
# Custom error pages
ErrorDocument 404 /404.html
# Disable directory listings
Options -Indexes
# Block access to hidden files such as .env and .git
<FilesMatch "^\.">
Require all denied
</FilesMatch>
RedirectMatch 404 /\.git
# Security headers
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
# Compress text responses
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
AddOutputFilterByType DEFLATE application/javascript application/json application/xml application/rss+xml
AddOutputFilterByType DEFLATE image/svg+xml font/ttf font/otf
</IfModule>
# Browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/avif "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
</IfModule>
Tạo .htaccess là gì?
Công cụ này tạo tệp .htaccess dùng ngay được cho Apache 2.4. Tích các tính năng bạn cần – chuyển hướng HTTPS, tên miền chính có hoặc không có www, HSTS, tắt liệt kê thư mục, bảo vệ tệp ẩn, nén gzip, cache trình duyệt, header bảo mật cơ bản – rồi thêm các chuyển hướng 301/302/410 và trang lỗi tùy chỉnh của riêng bạn.
Cách sử dụng Tạo .htaccess
- Tích các tùy chọn cần thiết và chọn cách xử lý www.
- Nhập chuyển hướng dạng
/old-path /new-path, có thể kèm mã trạng thái (301, 302, 303, 307, 308 hoặc 410). - Nhập đường dẫn cho trang lỗi 404 và 500 tùy chỉnh.
- Sao chép hoặc tải kết quả về dưới tên .htaccess và thử trên máy chủ staging trước.
Ví dụ
Force HTTPS, remove www, redirect /old-page → /new-page
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
Redirect 301 /old-page /new-page Khi nào nên dùng Tạo .htaccess
Dùng công cụ trên hosting dùng chung hoặc máy chủ Apache mà bạn không sửa được cấu hình chính. Với Nginx, cài đặt riêng của LiteSpeed, Cloudflare hay CDN, hãy dùng cấu hình của chúng – Nginx hoàn toàn bỏ qua .htaccess. Một lỗi cú pháp sẽ gây HTTP 500 cho toàn bộ thư mục, nên luôn phải thử trước.
Tạo .htaccess hoạt động như thế nào
Quy tắc HTTPS và www dùng mod_rewrite (RewriteCond %{HTTPS} off và điều kiện theo host) bên trong <IfModule mod_rewrite.c>; chuyển hướng www dùng thẳng https khi đã bắt buộc HTTPS, tránh chuỗi hai bước. Chuyển hướng đường dẫn dùng các dòng Redirect của mod_alias (Redirect gone cho 410). Nén dùng mod_deflate, cache dùng mod_expires với thời hạn dài cho tài nguyên tĩnh và không cache HTML, còn header dùng mod_headers với Header always set. Tệp ẩn bị chặn bằng <FilesMatch "^\."> và RedirectMatch 404 /\.git.
Các Trường Hợp Sử Dụng Phổ Biến
- Bắt buộc HTTPS và một tên miền không có www sau khi cài chứng chỉ.
- Chuyển hướng URL cũ sau khi thiết kế lại website.
- Bật nén và cache để tăng tốc website WordPress trên hosting dùng chung.
- Chặn truy cập tệp .env và .git.
Câu Hỏi Thường Gặp
Vì sao tôi bị lỗi 500 sau khi tải .htaccess lên?
Thường là do một module cần thiết chưa được bật hoặc một chỉ thị không được AllowOverride cho phép. Hãy xem error log của Apache.
Có nên bật HSTS không?
Chỉ khi toàn bộ website và mọi tên miền con đều chạy được HTTPS – trình duyệt sẽ từ chối HTTP thường trong suốt thời gian max-age.
.htaccess có chạy trên Nginx không?
Không. Nginx không đọc .htaccess; các quy tắc phải được chuyển thành cấu hình trong server block.