.htaccess là gì ? Cách dùng file .htaccess hỗ trợ Onpage toàn tập A-Z

.htaccess là gì ? Cách dùng file .htaccess toàn tập từ A-Z

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 đó.

.htaccess là gì

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.

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

.htaccess với host directAdmin

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

.htaccess với host Cpanel

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.

cách hiển thị tập tin .htaccess

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).

tạo file .htaccess

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

 

 

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.

Bật nén gzip với .htaccess

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(.+)$ https://seongon.com$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 !

 

5/5 (1 Review)
Vũ Quang Trung

Phó Giám Đốc Kỹ Thuật tại SEONGON "Google Ads và Harley Davison - Cân 2 thứ này trên bàn cân đam mê thì nó bằng nhau. Cân riêng thì nó nặng bằng cả đam mê của tôi"