Htaccess là gì và làm thế nào để tối ưu hóa tệp tin này nhằm nâng cao hiệu suất cũng như bảo mật cho website của bạn? Đây là một trong những câu hỏi phổ biến của các nhà quản trị web khi bắt đầu tối ưu hóa on-page cho dự án của mình. Việc hiểu rõ cấu trúc và cách vận hành của file .htaccess sẽ giúp bạn kiểm soát dòng dữ liệu, thiết lập chuyển hướng thông minh và bảo mật dữ liệu hiệu quả hơn.
Tìm hiểu chi tiết file .htaccess là gì và vị trí của nó
Để tối ưu website tốt nhất, trước tiên bạn cần hiểu rõ Htaccess là gì. Thực chất, .htaccess (Hypertext Access) là một tập tin cấu hình mạnh mẽ hoạt động trên máy chủ web Apache, cho phép bạn thiết lập các tùy chỉnh điều hướng, bảo mật và bật các tính năng linh hoạt mà không cần can thiệp sâu vào file cấu hình hệ thống của server. Nhờ đó, người quản trị có thể dễ dàng kiểm soát quyền truy cập, bảo mật tài liệu và điều hướng URL một cách tối ưu nhất.

Việc kết hợp linh hoạt cấu hình .htaccess cùng các nền tảng nội dung thông minh như Gencontent sẽ giúp website của bạn tăng trưởng thứ hạng nhanh chóng. Đừng quên trang bị thêm các kiến thức Seo Web hữu ích để tối ưu website toàn diện hơn.
File .htaccess nằm ở đâu?
Tập tin .htaccess nằm ngang hàng với thư mục gốc (thường là public_html, www, …) và file robots.txt. Các bạn mở host, tìm theo đường dẫn sau:
- Đối với host DirectAdmin: Bạn tìm theo đường dẫn:
File→public_html→.htaccess

- Đối với host Cpanel: Bạn tìm theo đường dẫn:
File manager→Public_html→.htaccess

Tôi không tìm thấy file .htaccess trong tập tin?
Trên hầu hết các trình quản lý hệ thống tệp tin của hosting, tên tệp bắt đầu bằng dấu chấm (.) là các tệp bị ẩn. Điều này có nghĩa là chúng thường không hiển thị theo mặc định vì lý do bảo mật. Các bạn chỉ cần vào phần Settings (Cài đặt) → tích chọn Show hidden folder (Hiển thị tệp tin ẩn) hoặc Show system files là xong.

Tôi không có file .htaccess thì sao?
Bạn chọn vào phần tệp → tạo tệp mới và đặt tên là .htaccess sau đó lưu lại. Bạn cũng có thể tạo 1 tập tin trên máy tính rồi lưu dưới tên .htaccess rồi upload file lên thư mục gốc (ngang hàng với robots.txt).

Sau khi có file rồi, bạn tiến hành mở lên và chèn đoạn code mặc định này vào:
# BEGIN WordPress
RewriteEngine On
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Chức năng “thần thánh” của .htaccess hỗ trợ onpage toàn tập từ A-Z
Dưới đây là tổng hợp các chức năng vượt trội mà .htaccess mang lại giúp tối ưu hóa onpage cho website của bạn. Tham khảo thêm các tài liệu kỹ thuật uy tín tại External Link.
1. Chuyển hướng www và non-www về một phiên bản
Hai phiên bản www và non-www được Google tính là hai domain khác nhau. Do đó ảnh hưởng rất lớn đến kết quả SEO. Bạn chỉ nên để một trong hai phiên bản mà thôi.
Để chuyển hướng về phiên bản www, bạn thêm đoạn code sau:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
Nếu như không muốn dùng www, bạn thêm đoạn code sau:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
2. Xử lý lỗi 4xx hoặc 5xx redirect đến trang lỗi tùy chỉnh
Trong quá trình vận hành website sẽ không tránh khỏi các lỗi cơ bản từ người dùng (401, 403, 404, 405) hoặc các lỗi từ server (500, 503, 504, 505). Bạn có thể tận dụng chức năng redirect về các trang thông báo lỗi đã thiết kế sẵn bằng đoạn code sau:
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 405 /error/405.php
ErrorDocument 500 /error/500.php
ErrorDocument 503 /error/503.php
ErrorDocument 504 /error/504.php
ErrorDocument 505 /error/505.php
3. Đặt mật khẩu cho thư mục hoặc file
Bạn muốn bảo vệ một số folder hoặc file riêng quan trọng, thêm đoạn mã code sau:
# Đặt Pass cho thư mục
AuthType basic
AuthName "Mục này đã khóa"
AuthUserFile /home/path/.htpasswd
AuthGroupFile /dev/null
Require valid-user
# SETUP mật khẩu cho file
<Files secure.php>
AuthType Basic
AuthName "Prompt"
AuthUserFile /home/path/.htpasswd
Require valid-user
</Files>
4. Thay đổi đuôi đường dẫn
Khi truy cập vào một số trang web, bạn hay thấy có các đuôi mở rộng như .php, .html… Điều này không ảnh hưởng gì lớn đến SEO nhưng bỏ đi sẽ nhìn chuyên nghiệp hơn, url trở nên ngắn gọn hơn.
- Bỏ đuôi .php khỏi đường dẫn:
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L] - Bỏ đuôi html khỏi đường dẫn:
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L] - Đổi đuôi .php sang đuôi .html vào đường dẫn:
RewriteRule ^(.*)\.html$ $1.php [R=301,L] - Đưa từ khóa chính của sản phẩm lên Url:
Ví dụ bạn muốn đổi từtenmien.com/product.php?id=12thànhtenmien.com/product/ipod-nano/12.html:RewriteEngine on
RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+).html$ product.php?id=$2
5. Tạo chuyển hướng 301 cực mạnh
Khi bạn muốn chuyển hướng toàn bộ website cũ sang website mới, hoặc chuyển hướng bài viết cũ sang bài viết mới thì redirect 301 là một phương án tối ưu nhất giúp đảm bảo điểm số SEO.
- Để chuyển toàn bộ tên miền:
RewriteEngine On
RewriteRule ^(.*)$ http://tenmienmoi.com/$1 [R=301,L] - Để chuyển 1 trang cụ thể:
Redirect 301 /danh-muc-cu/bai-viet-cu.htm http://tenmien.com/bai-viet-moi.htm
6. Bật tính năng nén Gzip
Tính năng này giúp tài nguyên website của bạn sẽ nén lại trên server trước khi gửi đến người dùng, qua đó giúp cho quá trình tải trang được nhanh hơn.
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 2 days"
</IfModule>
## EXPIRES CACHING ##
<filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|woff)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
<filesMatch ".(xml|txt)$">
Header set Cache-Control "max-age=86400, public, must-revalidate"
</filesMatch>
<filesMatch ".(html|htm)$">
Header set Cache-Control "max-age=14400, must-revalidate"
</filesMatch>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddType x-font/otf .otf
AddType x-font/ttf .ttf
AddType x-font/eot .eot
AddType x-font/woff .woff
AddType image/x-icon .ico
AddType image/png .png
</IfModule>
Sau khi bật nén xong, bạn có thể kiểm tra lại thông qua công cụ PageSpeed Insights của Google.

7. Bảo mật file wp-config trên WordPress
File wp-config.php chứa các thông tin cực kỳ quan trọng như Database, username, password… Bạn hãy bảo vệ file này bằng đoạn code sau:
<files wp-config.php>
order allow,deny
deny from all
</files>
8. Chuyển hướng http sang https và ngược lại
- Để chuyển http sang https:
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] - Để chuyển ngược lại từ https sang http:
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
9. Cấm IP truy cập vào trang web của bạn
Để ngăn chặn các IP xấu chuyên spam phá hoại website, bạn có thể chặn truy cập của họ dễ dàng:
ORDER ALLOW,DENY
DENY FROM 192.168.1.1
DENY FROM 234.45.67.89
ALLOW FROM ALL
Nếu muốn chặn cả dải IP:
ORDER ALLOW,DENY
DENY FROM 192.168.
ALLOW FROM ALL
10. Chống ăn cắp băng thông (Hotlink)
Tránh việc các website khác sử dụng trực tiếp link hình ảnh của bạn gây tốn băng thông máy chủ:
RewriteCond %{HTTP_REFERER} !^http://(www\.)?tenmien\.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?chophep\.tenmien\.com(/)?.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|bmp|png|js|css|html|htm)$ http://tenmien.com/images/canhbao.png [R,NC]
11. Chọn trang mặc định
Nếu bạn muốn thiết lập một trang bất kỳ thay thế cho các trang index mặc định làm trang chủ:
DirectoryIndex default.html
12. Chuyển đổi thư mục này sang thư mục khác
Để chuyển nhanh người dùng từ cấu trúc thư mục cũ sang thư mục mới:
Redirect 301 /seo-len-dinh/ https://seongon.com/dich-vu-seo
13. Xóa tham số facebook (fbclid) khi mở link từ facebook
Để loại bỏ phần đuôi ?fbclid=... rườm rà khi người dùng truy cập từ Facebook:
RewriteBase /
RewriteCond %{QUERY_STRING} "fbclid=" [NC]
RewriteRule (.*) /$1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
14. Xóa một phần tử trong đường dẫn
Khi bạn muốn rút ngắn cấu trúc link bằng cách bỏ bớt danh mục cha ở giữa (Ví dụ chuyển https://seongon.com/seo/bai-viet.html thành https://seongon.com/bai-viet.html):
RewriteRule ^seo(.+)$ http://127.0.0.1$1 [R=301,L]
15. Chuyển hướng AMP khi không dùng nữa
Nếu bạn tắt phiên bản AMP di động, cần cấu hình chuyển hướng ngay lập tức để tránh lỗi liên kết:
- Đối với bài viết:
RewriteEngine On
RewriteCond %{REQUEST_URI} (.+)/amp(.*)$
RewriteRule ^%1/ [R=301,L] - Đối với toàn trang:
rewrite ^/(.*)\/amp http://tenmien.com/$1 permanently;
Một số lưu ý khi sử dụng file .htaccess
- Trong file .htaccess chỉ được tồn tại duy nhất một dòng
RewriteEngine On. Do đó hãy kiểm tra kỹ trước khi chèn thêm bất kỳ đoạn mã mới nào. - File .htaccess là một file hệ thống quan trọng, cần được cấu hình chính xác và bảo mật cẩn thận để tránh bị can thiệp trái phép.
- Trước khi tiến hành chỉnh sửa, luôn luôn tạo một bản sao lưu (backup) nội dung cũ ra một file text. Nếu có lỗi xảy ra khiến website không hoạt động, bạn chỉ cần khôi phục lại bản backup là xong.

