HomeCMS

Hướng dẫn cách dùng file .htaccess toàn tập

Hướng dẫn cách dùng file .htaccess toàn tập
Like Tweet Pin it Share Share Email

File .htaccess là file vô cùng quan trọng khi thực hiện SEO Web, đối với các bạn làm SEO lâu năm hầu như ai cũng đã từng biết qua tập tin này rồi.

Hôm nay mình chia sẻ chi tiết về định nghĩa và cách sử dụng file .htaccess giúp bạn khai thác hiệu quả khi quản trị web.

File .htaccess là gì?

Tập tin .htaccess (hypertext access) là một file có ở thư mục gốc của các hostting và do apache quản lý, cấp quyền. File .htaccess có thể điều khiển, cấu hình được nhiều thứ với đa dạng các thông số, nó có thể thay đổi được các giá trị được set mặc định của apache.

Nếu biết thác tốt thì .htaccess sẽ giúp được bạn rất nhiều việc mà tốn rất ít công sức đơn giản chi vài dòng lệnh là được.

File .htaccess ở đâu? và cách tạo ra nó?

File .htaccess ở thư mục gốc public_html nếu bạn sử dụng các cms mã nguồn mở như Joomla hoặc WordPress thì mặc định nó đã có một file dạng htaccess.txt bạn chỉ cần đổi đôi .txt về .htaccess là ok.

Nếu bạn tự code web của bạn thì có thể dễ dàng tạo file .htacess

Một số công dụng của file .htaccess thường hay sử dụng trong quản trị web

Bỏ hoặc thêm www vào domain

File .htaccess giúp bạn có thể thêm www hoặc bỏ www vào trước domain theo yêu cầu của khách hàng hoặc cho phù hợp với tiêu chuẩn của SEO.

// Thêm WWW vào URL

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]

RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

// Không theme WWW vào URL

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} !^domain.com$ [NC]

RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

Redirect đến trang thông báo lỗi riêng với file .htaccess

Trong web thì có nhiều lỗi như: 401, 403, 404, 500 … là các lỗi phổ biến, nếu không redirect nó sẽ trả về trình duyệt của người dùng một thông báo rất xấu, không chuyên nghiệp và tạo cảm giác khó chịu khi bị lỗi, bạn có thể dùng file .htaccess để chỉnh redirect đến trang thông báo lỗi mà bạn đã thiết kế bằng cách:

ErrorDocument 401 /error/401.php

ErrorDocument 403 /error/403.php

ErrorDocument 404 /error/404.php

ErrorDocument 500 /error/500.php

Dùng .htaccess redirect tên miền cũ qua tên miền mới

Khi bạn quyết định chuyển 1 website qua 1 tên miền mới thì 1 trong những điều quan trọng là phải điều hướng (redirect) tên miền cũ qua tên miền mới. phương pháp này tối ưu nhất cho việc chuyển hướng tên miền (domain) hoặc file nào đó mà không mất lưu lượng truy cập cũng như ảnh hưởng tới kết quả tìm kiếm trên các công cụ tìm kiếm.

Ví dụ: website của công ty bạn đang chạy với domain ictsharing.blogsport.com đang có lượng truy cập ổn định và khi tìm kiếm thông tin trên các công cụ tìm kiếm cho ra kết quả. Một ngày nào đó sếp bạn muốn thay domain cũ về domain mới ictsharing.com dẫn tới chết link trên các công cụ tìm kiếm. Ảnh hưởng tới doanh số bán hàng công ty…

Để giải quyết bài toán này, bạn thao tác rất đơn giản trên file .htaccess như sau:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR]
  RewriteCond %{HTTP_HOST} ^www.olddomain.com$
  RewriteRule (.*)$ http://www.newdomain.com/$1 [R=301,L]
</IfModule>

Cài đặt 301 Redirect có lợi cho SEO

Đây là phương pháp được xem là tối ưu nhất cho việc chuyển tên miền hay chuyển file nào đó mà không mất về lượng truy cập cũng như về kết quả tìm kiếm trên google, thao tác 301 Redirect trên file .htaccess như sau:

// 1 Trang

Redirect 301 /old/old.htm http://domain.com/new.htm

// chuyển domain

RewriteEngine On

RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

Chặn hotlink với file .htaccess

Hotlink chính là link trực tiếp đến trang web của người khác lấy các file về sử dụng trên website, có thể là file hình ảnh, video, tài liệu … Hotlink là một giải pháp cho những blog tạm, không chắc chắn và những ai hay đi copy bài người viết của các trang web khác. Hotlink sẽ làm tốn một lượng băng thông rất lớn vì các site khác lấy file trực tiếp từ host của bạn. Sau đây là cách mà bạn ngăn chặn việc đó bằng file .htaccess

Options +FollowSymlinks

#No hotlink

RewriteEngine On

RewriteCond %{HTTP_REFERER}!^$

RewriteCond %{HTTP_REFERER}!^http://(www.)?domain.com/[nc]

RewriteRule .*.(gif|jpg|png)$ http://domain.com/images/nohotlink.gif[nc]

Bỏ đuôi mở rộng của file web “.php”

Khi duyệt website muốn địa chỉ URL phải đẹp, chuyên nghiệp, và đôi lúc muốn che giấu công nghệ web đang sử dụng cũng có thể áp dụng phương pháp này. bạn vào file .htaccess gõ mã lệnh như sau:

RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

Chuyển .php sang .html trong url

Công việc này cũng khá đơn giản với file cấu hình .htaccess này, có một số lý do khiến bạn làm công việc này, đó là bạn muốn bảo mật, đuôi .html đẹp hơn .php, rồi để tối ưu SEO … bạn làm như sau:

RewriteRule ^(.*).html$ $1.php [R=301,L]

Thêm dấu “/” vào cuối URL

Mã nguồn WordPress khi bạn tối ưu URL thì bạn sẽ thấy được có dấu “/” ở sau mỗi URL, điều đó là sẽ tốt cho SEO. Tránh bị các công cụ tìm kiếm cho là trùng lắp nội dung.

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !#

RewriteCond %{REQUEST_URI} !(.*)/$

RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]

Cấm IP truy cập vào site

Có đôi lúc bạn muốn cấm hẳn một IP nào đó không được truy cập vào site của bạn vì lý do nào đó như: spam quá mức, thường xuyên viết comment không đúng qui định, thành phần cá biệt … trong trường hợp này can thiệp vào tập tin .htaccess bạn cũng có thể làm được việc này.

allow from all

deny from 192.168.1.123

deny from 192.168

ví dụ:

deny from 222.172.22.80;
deny from 168.56.172.80;

Bên trên là mã để chặn IP 222.172.22.80, 168.56.172.80 bạn có thể thêm bao nhiêu dòng để chặn bao nhiêu IP tùy ý

Bảo vệ file trong host dùng .htaccess

Bạn muốn tăng sự bảo mật cho trang web của bạn bằng cách bảo vệ các file, không cho phép truy cập trực tiếp vào các file trong host bạn có thể sử dụng cách sau, và cách này sẽ trả về lỗi 403 cho trình duyệt.

# Bảo vệ file dùng .htaccess

<files .htaccess="">

order allow,deny

deny from all

</files>

Đặt password cho thư mục và file

Trong một số trường hợp bạn muốn đặt mật khẩu cho file và thư mục, tránh sự truy cập trái phép của người khác bạn có thể dùng file .htaccess và gõ mã lệnh như sau:

#Đặt Pass cho thư mục

resides

AuthType basic

AuthName "Thư mục này đã được bảo vệ"

AuthUserFile /home/path/.htpasswd

AuthGroupFile /dev/null

Require valid-user

# Đặt Pass cho file

<files secure.php="">

AuthType Basic

AuthName "Prompt"

AuthUserFile /home/path/.htpasswd

Require valid-user

</files>

Chuyển dấu “_” thành “-” trong URL

Dấu _ hay dấu – thì đều là dấu phân cách để hiểu được và phân biệt giữa chữ này với chữ kia tuy nhiên người xem lại thích dấu “-“hơn vì nó dễ nhìn và có cảm giác phân cách hơn dấu kia nhìn giống như một chuổi dài liên tục, mặt khác đâu “-” có thể sẽ có lợi cho SEO. bạn chuyển đổi bằng cách sau:

Options +FollowSymLinks

RewriteEngine On

RewriteBase /

RewriteRule !.(html|php)$ - [S=4]

RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes]

RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes]

RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes]

RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=uscor:Yes]

RewriteCond %{ENV:uscor} ^Yes$

RewriteRule (.*) http://domain.com/$1 [R=301,L]

Set lại trang mặc định

Hostting nhận trang mặc định chạy lên khi không rõ địa chỉ URL của trang đích thực là index.php, index.html … bây giờ bạn muốn chạy mặc định là trang khác ví dụ như trang info.html bạn có thể cài đặt trong file .htaccess như sau:

DirectoryIndex info.html

Bật tính năng nén file Gzip

Bạn có thể bật chức năng này lên, và rất quan trọng trong việc backup dữ liệu, mục đích để tải dữ liệu được nhanh chóng và tranh mất mát. Chèn đoạn code sau đây vào đầu file .htaccess để để bật nén gzip thông qua mod_deflate:

<IfModule mod_deflate.c>
  # Compress HTML, CSS, JavaScript, Text, XML and fonts
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml

  # Remove browser bugs (only needed for really old browsers)
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  Header append Vary User-Agent
</IfModule>

Nếu web server của bạn không hỗ trợ mod_deflate, hãy thay thế nó bằng mod_gzip với code sau đây:

<ifModule mod_gzip.c>
  mod_gzip_on Yes
  mod_gzip_dechunk Yes
  mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
  mod_gzip_item_include mime ^application/x-javascript.*
  mod_gzip_item_include mime ^text/.*
  mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
  mod_gzip_item_exclude mime ^image/.* 
  mod_gzip_item_include handler ^cgi-script$
</ifModule>

Bỏ từ “category” ở URL

Sử dụng file .htaccess để xóa từ category ở URL của website WordPress

RewriteRule ^category/(.+)$ http://domain.com/$1 [R=301,L]

Không cho truy cập file wp-config.php của WordPress

Trong WordPress bạn cũng biết là file wp-config.php rất quan trọng chứa thông số về database username, pass… mình sẽ cấp không cho truy cập trang bằng cách như sau:

# Bảo mật file wpconfig.php

<files wp-config.php>

order allow,deny

deny from all

</files>

Giới hạn file Upload

Công việc này cũng quan trọng trong việc tiết kiệm tài nguyên website của bạn, việc giới hạn này sẽ làm cho web nhẹ nhàng hơn, load nhanh hơn … thêm vào trong file. htaccess đoạn code sau:

# Giới hạn đến 10mb

LimitRequestBody 10240000

Redirect http qua https bằng .htaccess

Tham khảo chi tiết qua bài viết sau: chuyển hướng từ http:// sang https:// sau khi cài SSL

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Lưu ý không được có 2 dòng “RewriteEngine On” trong file htaccess

Một số lưu ý khi sử dụng file .htaccess

  • Cần lưu lại một file .htaccess trước khi tiến hành chỉnh sửa. Nếu có trục trặc xảy ra vẫn có thể khôi phục lại.
  • Thật cẩn thận khi sử dụng, nếu không nắm rõ cấu hình có thể khiến website của bạn không hoạt động hoặc hoạt động không như ý muốn.
  • Cẩn phải bảo mật file .htaccess để trách kẻ xấu lợi dụng.

Bài viết được mình tìm hiểu thêm một số site trên mạng và đã kiểm tra chi tiết trước khi viết bài. Hy vọng sẽ hữu ích cho bạn, có bất kỳ câu hỏi gì xin vui lòng inbox hoặc comment bên dưới nhé!

Comments (1)

Leave a Reply

Your email address will not be published. Required fields are marked *