Tìm hiểu file .htaccess
File .htaccess là gì ?
File .htaccess là một tập tin cấu hình mà ảnh hưởng đến cách một máy chủ web đáp ứng các yêu cầu khác nhau. Nó được hỗ trợ bởi một số máy chủ web, trong đó có Apache phổ biến được sử dụng bởi 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à bật các tính năng một cách linh hoạt hoặc bảo vệ dữ liệu tệp tin nào đó.
Nhìn vào “định nghĩa” về file .htaccess bạn đã gần như thấy được điều mình muốn. .htaccess chính là nơi lưu trữ những hành động điều hướng URL trên site. Nếu như bạn am hiểu về .htaccess… à mà không khi đọc hết bài viết này chắc chắn bạn sẽ hiểu hết về nó thôi, bạn sẽ thấy file .htaccess có công dụng “thần thánh” mà công sức bạn bỏ ra chỉ.. vài dòng lệnh.
Xem thêm:
- Tối ưu on-page mượt mà cho website với 30 checklist cập nhật nhất
- Cách tạo sitemap cho website chuẩn nhất
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 setting → 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 đó save 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
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
Đi vào trọng tâm, tôi sẽ hướng dẫn các bạn tổng hợp các chức năng mà .htaccess mang lại.
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. Dó đó ả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]
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 như:
Các lỗi cơ bản từ người dùng
401: yêu cầu ủy quyền
403: Không cho phép truy cập
404: Nội dung không tồn tại/đã xóa
405: Phương thức nhập sai
Các lỗi cơ bản từ server
500: lỗi máy chủ nội bộ
503: Dịch vụ không khả dụng
504: Hết thời gian chờ
505: Phiên bản HTTP không được hỗ trợ
Bạn có thể tận dụng chức năng direct 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
Đặ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
resides
AuthType basic
AuthName "Mục này đã khóa"
AuthUserFile /home/path/.htpasswd
AuthGroupFile /dev/null
Require valid-user
# SETUP mật khẩu
<files secure.php="">
AuthType Basic
AuthName "Prompt"
AuthUserFile /home/path/.htpasswd
Require valid-user
</files>
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. Hoặc nếu bạn muốn hiển thị đuôi .html cho đẹp hơn, hãy làm theo cách sau:
- 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]
- Đưa từ khóa chính của sản phẩm lên Url
Một SEOer chuyên nghiệp phải biết khéo léo đưa từ khóa chính lên trên URL.Tôi lấy một ví dụ: tenmien.com/product.php?id=12. Giờ bạn muốn đổi nó lại thành: tenmien.com/product/ipod-nano/12.html, bạn làm như sau:
RewriteEngine on
RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+).html$ product.php?id=$2
- Đổi đuôi .php sang đuôi .html vào đường dẫn
RewriteRule ^(.*)\.html$ $1.php [R=301,L]
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 được coi là tối ưu nhất. Chuyển hướng 301 vừa giúp cho bạn điều hướng url không mất dữ liệu mà kết quả tìm kiếm của google vẫn được đảm bảo. Để thực hiện điều này, bạn làm theo hướng dẫn sau:
- Để chuyển toàn bộ tên miền:
RewriteEngine On
RewriteRule ^(.*)$ http://tenmien.com/$1 [R=301,L
- Để chuyển 1 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 đoạn code sau:
Redirect 301 /danh-muc-cu/bai-viet-cu.htm http://tenmien.com/bai-viet-moi.htm
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. Thực hiện thêm đoạn code sau vào .htaccess:
## 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 ##
# 1 Month for all your static assets
<filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|woff)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
# 1 DAYS for rss feeds and robots
<filesMatch ".(xml|txt)$">
Header set Cache-Control "max-age=86400, public, must-revalidate"
</filesMatch>
# 4 HOURS for your real 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/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ể vào công cụ PageSpeed Insights của google để xem tính năng này đã được bật trên website của bạn chưa.
Xem thêm: GZIP trong Joomla
Bảo mật file wp-config trên wordpress
File wp-config.php là một file rất quan trọng trong nền tảng WordPress. File này chứa các thông tin bao gồm: Database, localhost, username. password…. Bạn có thể bảo mật file này bằng cách đặt mật khẩu cho nó qua đoạn code sau:
<files wp-config.php>
order allow,deny
deny from all
</files>
Chuyển hướng http sang https và ngược lại
- Để chuyển http sang https, bạn chèn code này vào .htaccess như sau:
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Note: file .htaccess chỉ được tồn tại 1 dòng RewriteEngine on mà thôi. nếu như đã có rồi thì bạn không cho vào nữa nhé.
- Để chuyển ngược lại:
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Cấm ip truy cập vào trang web của bạn
Đôi khi bạn thấy các ip truy cập vào web của bạn một cách “ quá đà ” , đốt sạch dung lượng băng thông của bạn. Hay nói chính xác là mấy thằng spam vào web bạn. Đã có cách giải quyết như sau:
ORDER ALLOW,DENY
DENY FROM 192.168.1.1
DENY FROM 234.45.67.89
DENY FROM 123.45.67.89
ALLOW FROM ALL
Nếu như muốn chặn 1 dải IP, làm như sau:
ORDER ALLOW,DENY
DENY FROM 192.168.
DENY FROM 123.0.0.
ALLOW FROM ALL
Các thông số IP các bạn thay bằng IP xác định spam web của bạn.
Chống ăn cắp băng thông (hotlink)
Bạn có thể chống lại việc bị bandwidth bằng cách thêm đoạn code 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 nghĩa là cho phép bạn đặt nhiều domain. Bạn có thể ghi địa chỉ trang domain của mình và các trang domain cho phép dùng chung.
Phần màu lục là phần mở rộng của tập tin mà bạn muốn không bị hotlink.
Phần màu lam là ảnh bạn thiết kế ra để tạo ra thông báo hiển thị nếu có website khác đặt hotlink.
Chọn trang mặc định
Thông thường các hosting sẽ mặc định chạy các trang như: index.html, home.html, index.php… Tuy nhiên nếu bạn muốn set lại trang khác làm trang mặc định? Đơn giản thôi!
Hãy thêm đoạn code này vào:
DirectoryIndex default.html
Với default là tên của trang mặc định.
Chuyển đổi thư mục này sang thư mục khác
Bạn có 1 Url là: https://seongon.com/seo-len-dinh và bạn muốn chuyển nó thành https://seongon.com/dich-vu-seo. Hãy thực hiện thêm đoạn code này vào .htaccess:
Redirect 301 /seo-len-dinh/https://seongon.com/dich-vu-seo
Xóa tham số facebook( fbclick) khi mở link từ facebook
Khi bạn mở một link từ facebook, bạn có thấy url nó thêm đoạn ?fbclid=abcxyz… không ? Tôi sẽ chỉ cho bạn cách xóa cái đuôi loằng ngoằng đó. Thực ra thì làm việc này hay không cũng không sao cả,chẳng ảnh hưởng gì đến việc SEO đâu! Chẳng qua muốn copy Url mang đi đâu đó nhìn đỡ dài và đỡ nhầm thôi!
RewriteBase /
RewriteCond %{QUERY_STRING} "fbclid=" [NC]
RewriteRule (.*) /$1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Xóa một phần tử trong đường dẫn
Cái này hay ho này! Bạn có một url như sau: https://seongon.com/seo/8-cong-cu-nghien-cu-tu-khoa-mien-phi.html
và bạn muốn xóa cái thằng danh mục seo cho nó ngắn gọn hơn thành: https://seongon.com/8-cong-cu-nghien-cu-tu-khoa-mien-phi.html mà không muốn bị ảnh hưởng gì ? Cách làm như sau:
RewriteRule ^seo(.+)$ http://127.0.0.1$1 [R=301,L]
Done !
Chuyển hướng AMP khi không dùng nữa
Công cụ AMP của google cho phép web của bạn load nhanh như gió trên các thiết bị di động. Nhưng nếu như bạn không sử dụng nữa và tắt plugin đi thì các url của bạn chưa đưa về trang đích ngay đâu, mà phải làm thế này:
- Đối với các 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ó duy nhất một dòng RewriteEngine On mà thôi. Thế nên trước khi thêm đoạn code mới nào nhớ Ctr + F để kiểm tra xem có đoạn mã kia chưa rồi hãy thêm nhé!
- File .htaccess là một file quan trọng, do đó cần phải được bảo mật cẩn thận, tránh để bị người khác vào sửa linh tinh
- Trước khi chỉnh sửa thêm bớt cái gì, tiến hành tạo backup chép toàn bộ nội dung của thằng .htaccess ra chỗ khác, để nếu sai thì restore lại. File htaccess nếu như cấu hình sai có thể khiến toàn bộ website không hoạt động được hoặc hoạt động không đúng ý.
- Hết !
Trên đây là những điều bạn cần biết về file .htaccess, và chức năng thần thánh của file. Nếu như bạn không nắm rõ thì đừng ngần ngại liên hệ với SEONGON để được giải đáp tư vấn dịch vụ SEO trang web nhé!
Xem thêm một số bài viết để cập nhật thêm những kiến thức SEO cơ bản: