Tùy chỉnh .htaccess giải pháp tối ưu onpage chuẩn SEO toàn diện cho Website
15/10/2025
.htaccess được xem như là một “chìa khóa quyền lực” giúp người quản trị kiểm soát toàn diện website, từ chuyển hướng URL, bảo vệ thư mục, tăng tốc độ tải trang hay tối ưu SEO và bảo mật hệ thống. Cùng BMW khám phá bộ kỹ năng khai thác tiềm năng của .htaccess và biến nó thành trợ thủ trong hành trình tối ưu onpage của các SEOer nào!
Tìm hiểu tập tin .htaccess là gì?
Tập tin .htaccess là một tài liệu cấu hình có ảnh hưởng đến cách mà một máy chủ web phản hồi các yêu cầu khác nhau. Nó được hỗ trợ bởi một số máy chủ web, bao gồm Apache, vốn rất phổ biến trong số các nhà cung cấp dịch vụ lưu trữ web thương mại, cho phép chúng ta thực hiện điều hướng và kích hoạt các chức năng một cách linh hoạt hoặc bảo vệ dữ liệu của một số tập tin nhất định.
.htaccess trợ thủ đắc lực trong hành trình tối ưu SEO onpage
Khi bạn xem xét “định nghĩa” về tập tin .htaccess, bạn đã gần như nhận ra điều mình tìm kiếm. .htaccess chính là nơi lưu trữ các hành động điều hướng URL trên website. Nếu bạn thông thạo về .htaccess… à mà không, khi bạn đọc hết bài viết này, chắc chắn bạn sẽ hiểu rõ về nó, và bạn sẽ nhận ra rằng tệp .htaccess có công dụng “thần kỳ” mà chỉ với vài dòng lệnh, bạn sẽ thu được rất nhiều.
Tập tin .htaccess nằm ở đâu?
Tập tin .htaccess nằm ở vị trí ngang hàng với thư mục gốc (thường là public_html, www,…) và tập tin robots.txt. Bạn mở host và tìm theo đường dẫn sau:
Đối với host DirectAdmin, bạn tìm theo đường dẫn: Tập tin → public_html → .htaccess
Đối với host Cpanel, bạn tìm theo đường dẫn: Quản lý tệp → Public_html → .htaccess
Tôi không tìm thấy tập tin .htaccess trong danh sách?
Trên hầu hết các trình quản lý hệ thống tệp tin của hosting, các tệp có tên bắt đầu bằng dấu chấm (.) là các tệp ẩn. Điều này có nghĩa là chúng thường không hiển thị theo chế độ mặc định vì lý do an ninh. Bạn chỉ cần vào phần cài đặt → tích chọn hiển thị thư mục ẩn hoặc hiển thị các tệp hệ thống là xong.
Phương pháp làm cho tệp ẩn .htaccess được hiển thị lại
Nếu không có tập tin .htaccess thì sao?
Bạn hãy nhấp vào phần tệp → tạo tệp mới và đặt tên là .htaccess rồi lưu lại. Bạn cũng có thể tạo một tệp trên máy tính và lưu với tên .htaccess rồi tải tệp lên thư mục gốc (trong cùng cấp với robots.txt).
Tạo mới tệp ht.access và thêm đoạn code vào để nó hoạt động.
Sau khi đã có tệp, bạn mở nó lên và thêm đoạn mã mặc định dưới đây vào:
# BẮT ĐẦU WordPressRewriteRule ^index.php$ – [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [L]# KẾT THÚC WordPress
Chức năng “kỳ diệu” của .htaccess
Đi vào trọng tâm, BaoMinhWin sẽ chỉ dẫn cho bạn tổng hợp các chức năng mà .htaccess cung cấp như chuyển hướng URL (Redirects), tối ưu SEO hay bảo mật Website, quản lý cache…
Chuyển hướng www và non-www về một phiên bản duy nhất
Hai phiên bản www và non-www được Google xem là hai miền khác nhau. Điều này ảnh hưởng rất lớn đến kết quả SEO. Bạn nên giữ chỉ một trong hai phiên bản. Để thực hiện chuyển hướng về phiên bản www, bạn thêm đoạn mã sau:
RewriteEngine OnRewriteBase /RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]Nếu không muốn sử dụng www, bạn hãy thêm đoạn mã sau:RewriteEngine OnRewriteBase /RewriteCond %{HTTP_HOST} !^domain.com$ [NC]RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
Xử lý lỗi 4xx hoặc 5xx và chuyển hướng đến trang lỗi tùy chỉnh
Trong quá trình hoạt động của website sẽ không tránh khỏi các lỗi phổ biến từ người dùng như sau:
Mã lỗi
Ý nghĩa
401
Yêu cầu xác thực (Unauthorized)
403
Không được phép truy cập (Forbidden)
404
Nội dung không tồn tại hoặc đã bị xóa (Not Found)
405
Phương thức bị sai (Method Not Allowed)
500
Lỗi máy chủ nội bộ (Internal Server Error)
503
Dịch vụ không khả dụng (Service Unavailable)
504
Hết thời gian chờ (Gateway Timeout)
505
Phiên bản HTTP không được hỗ trợ (HTTP Version Not Supported)
Bạn có thể tận dụng chức năng chuyển hướng đến các trang thông báo lỗi đã thiết kế sẵn bằng đoạn mã 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
Đặt mật khẩu cho thư mục hoặc tệp
Nếu bạn muốn bảo vệ một số thư mục hoặc tệp quan trọng, hãy thêm đoạn mã sau:
# Đặt mật khẩu cho thư mụcresidesAuthType basicAuthName "Phần này đã bị khóa"AuthUserFile /home/path/.htpasswdAuthGroupFile /dev/nullRequire valid-user# CÀI ĐẶT mật khẩu<files secure.php="">AuthType BasicAuthName "Nhắc nhở"AuthUserFile /home/path/.htpasswdRequire valid-user</files>
Thay đổi phần mở rộng của đường dẫn
Khi bạn truy cập một số trang web, bạn thường gặp những phần mở rộng như: .php, .html… Tuy rằng điều này không gây ảnh hưởng lớn đến SEO nhưng việc loại bỏ chúng sẽ tạo vẻ chuyên nghiệp hơn, đồng thời làm URL ngắn gọn hơn. Ngoài ra, nếu bạn muốn hiển thị phần mở rộng .html cho đẹp hơn, hãy tiến hành theo cách sau:
Loại bỏ phần nối .php khỏi đường dẫn
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]
Loại bỏ phần nối .html khỏi đường dẫn
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L]
Đưa từ khóa chính của sản phẩm lên URL
Một chuyên gia SEO cần phải khéo léo đưa từ khóa chính lên đầu URL. Tôi có một ví dụ: tenmien.com/product.php?id=12. Nếu bạn muốn biến nó thành: tenmien.com/product/ipod-nano/12.html, bạn thực hiện như sau:
RewriteEngine onRewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+).html$ product.php?id=$2
Thay đổi phần nối .php thành .html trong đường dẫn
RewriteRule ^(.*).html$ $1.php [R=301,L]
Tạo chuyển hướng 301 cực kỳ hiệu quả
Khi bạn có nhu cầu chuyển hướng toàn bộ website cũ sang trang web mới, hoặc chuyển một bài viết cũ sang bài viết mới thì redirect 301 được xem là giải pháp tối ưu nhất. Chuyển hướng 301 không chỉ giúp bạn điều hướng URL mà còn giữ nguyên dữ liệu và bảo đảm thứ hạng tìm kiếm trên Google. Để thực hiện, hãy làm theo hướng dẫn dưới đây:
Để chuyển hướng một trang cụ thể: ví dụ bạn cần chuyển một bài cũ là: http://tenmien.com/danh-muc-cu/bai-viet-cu.htm sang bài mới là: http://tenmien.com/bai-viet-moi.htm, bạn thêm mã sau đây:
Tính năng này sẽ nén tài nguyên của website trên máy chủ trước khi gửi đến người dùng, giúp tăng tốc độ tải trang. Hãy thêm đoạn mã sau vào tệp .htaccess:
## EXPIRES CACHING ##<IfModule mod_expires.c>ExpiresActive OnExpiresByType 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"ExpiresDefaultaccess in addition to 2 days</IfModule>## CACHING EXPIRATION ### 1 Month for all of your static resources<filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|woff)$">Header set Cache-Control "max-age=2592000, public"</filesMatch># 1 DAY for rss feeds and bot crawlers<filesMatch ".(xml|txt)$">Header set Cache-Control "max-age=86400, public, must-revalidate"</filesMatch># 4 HOURS for your genuine articles files<filesMatch ".(html|htm)$">Header set Cache-Control "max-age=14400, must-revalidate"</filesMatch><IfModule mod_deflate.c># compress text, html, javascript, css, xml:AddOutputFilterByType DEFLATE text/plainAddOutputFilterByType DEFLATE text/htmlAddOutputFilterByType DEFLATE text/xmlAddOutputFilterByType DEFLATE text/cssAddOutputFilterByType DEFLATE application/xmlAddOutputFilterByType DEFLATE application/xhtml+xmlAddOutputFilterByType DEFLATE application/rss+xmlAddOutputFilterByType DEFLATE application/javascriptAddOutputFilterByType DEFLATE application/x-javascriptAddType x-font/otf .otfAddType x-font/ttf .ttfAddType x-font/eot .eotAddType x-font/woff .woffAddType image/x-icon .icoAddType image/png .png</IfModule>
Khi tính năng nén được kích hoạt, bạn có thể truy cập công cụ Google PageSpeed Insights để kiểm tra tính năng này có đang hoạt động trên website của mình hay không.
.htaccess giúp cải thiện thang điểm trên Google PageSpeed Insights
Securing wp-config file on WordPress
Tệp wp-config.php là một file quan trọng của nền tảng WordPress, nó chứa các thông tin như cơ sở dữ liệu, máy chủ nội bộ, tên người dùng, mật khẩu v/v…Để tăng tính bảo mật cho tệp này, bạn có thể thiết lập mật khẩu thông qua đoạn mã sau.
<files wp-config.php>order allow,denydeny from all</files>
Chuyển hướng HTTP sang HTTPS và ngược lại
Để chuyển đổi từ giao thức HTTP sang HTTPS bạn có thể chèn đoạn mã sau vào tệp .htaccess:
RewriteEngine onRewriteCond %{HTTPS} !=on [NC]RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
*Chú ý: tập tin .htaccess chỉ có thể chứa một dòng RewriteEngine on. Nếu đã tồn tại thì bạn không nên thêm vào nữa nhé.
Để quay lại ta làm như sau:
RewriteEngine OnRewriteCond %{HTTPS} onRewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Cấm địa chỉ IP truy cập trang web của bạn
Đôi khi bạn sẽ thấy một số địa chỉ IP truy cập vào trang của bạn một cách “quá đáng”, làm tiêu tốn hết băng thông của bạn. Hay nói chính xác hơn là một vài kẻ spam đang xâm nhập vào website của bạn với ý đồ không được tốt cho lắm. Bạn có thể áp dụng cách giải quyết như sau:
ORDER ALLOW,DENYDENY FROM 192.168.1.1DENY FROM 234.45.67.89DENY FROM 123.45.67.89ALLOW FROM ALL
Nếu bạn cần chặn một dải IP, thực hiện như sau:
ORDER ALLOW,DENYDENY FROM 192.168.DENY FROM 123.0.0.ALLOW FROM ALL
Hãy thay thế các thông số IP bằng địa chỉ IP của kẻ spam vào trang web của bạn.
Ngăn chặn việc đánh cắp băng thông (hotlink)
Đôi khi bạn sẽ thấy một vài website khác họ sẽ nhúng trực tiếp hình ảnh, video hoặc nội dung từ trang của bạn vào nội dung của họ. Điều này sẽ làm cho người dùng của họ sẽ tải tài nguyên từ máy chủ của ta, khiến chúng ta mất đi một lượng băng thông đáng kể.
Bạn có thể ngăn việc bị ăn cắp băng thông bằng cách thêm đoạn mã sau vào file .htaccess như sau:
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]
Phần màu hồng cho phép bạn chỉ định nhiều tên miền. Bạn có thể nhập địa chỉ trang web của mình và các trang web khác mà được phép chia sẻ.
Phần màu xanh lục là các định dạng tệp tin mà bạn muốn ngăn không cho bị hotlink.
Phần màu xanh lam là bức ảnh bạn đã thiết kế để hiển thị thông báo khi có website khác thực hiện hotlink.
Chọn trang mặc định
Thường thì các dịch vụ hosting sẽ mặc định chạy các trang như: index.html, home.html, index.php… Nhưng nếu bạn muốn thiết lập một trang khác làm trang mặc định? Rất đơn giản!
Chỉ cần thêm đoạn mã này vào:
DirectoryIndex default.html
Với default là tên của trang thiết lập mặc định.
Chuyển đổi thư mục này sang thư mục khác
Giả sử bạn có một URL là: https://baominhwin.com/seo-len-dinh và bạn muốn chuyển nó thành https://baominhwin.com/dich-vu-seo. Bạn chỉ cần thêm đoạn mã này vào tệp .htaccess:
Redirect 301 /seo-len-dinh/ https://baominhwin.com/dich-vu-seo
Xóa tham số facebook (fbclick) khi mở liên kết từ facebook
Loại bỏ phần đuôi mở rộng mỗi khi click vào link trên Facebook
Khi bạn truy cập một liên kết từ facebook, bạn có thấy URL thêm đoạn ?fbclid=abcxyz… phải không? Tôi sẽ chỉ cho bạn cách xóa cái đuôi rườm rà đó. Thật ra việc này không ảnh hưởng gì đến SEO cả! Như vậy chỉ để sao chép URL đi đâu đó trông đỡ dài và tránh nhầm lẫn thôi!
RewriteBase /RewriteCond %{QUERY_STRING} "fbclid=" [NC]RewriteRule (.*) /$1? [R=301,L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME}
```<!-dRewriteRule . /index.php [L]
Xóa một phần tử trong đường dẫn
Đây là một phương pháp tối ưu đường dẫn khá thú vị, ví dụ bạn có một đường dẫn URL như sau https://baominhwin.com/seo/8-cong-cu-nghien-cu-tu-khoa-mien-phi.html
Và mục tiêu của chúng ta là loại bỏ danh mục seo để rút gọn thành https://baominhwin.com/8-cong-cu-nghien-cu-tu-khoa-mien-phi.html, phương pháp này sẽ không gây ra bất kỳ ảnh hưởng nào tới SEO của website.
RewriteRule ^seo(.+)$ http://127.0.0.1$1 [R=301,L]
Chuyển hướng AMP khi không dùng nữa
Công nghệ mở của Google giúp phát triển tốc độ load trên di động
Công cụ AMP của Google cho phép website của bạn tải với tốc độ rất nhanh trên tất cả các thiết bị di dộng. Tuy nhiên, một khi chúng ta không còn sử dụng tính năng này và các plugin liên quan đã bị ngừng hoạt động, các URL AMP sẽ không tự động chuyển hướng đến trang gốc ngay lập tức, lúc này chúng ta cần thêm các dòng code sau: