![]() |
| Tìm hiểu cấu trúc và cấu hình file .htaccess cho website |
I. File .htaccess là gì?
Hypertext Access hay còn gọi là htaccess là một tập tin dùng để cấu hình máy chủ web apache. Nó được máy chủ chấp nhận như là một thành phần và 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ệ một phần (folder) nào đó của trang web.Trong cái tên .htaccess thì htaccess là phần đuôi và tập tin này là không có tên (noname), chính vì thế khi bạn đưa file này lên host không phải lúc nào nó cũng hiển thị ra. Ví dụ bạn dùng Total Commander để xử lý file FTP thì bạn sẽ không thể thấy file .htaccess được.
Để thao tác với file .htaccess ta có thể sử dụng bất kì một editor nào hỗ trợ code text như Netbeans, PHP Designer, hay thậm chí là phần mềm notepadd có sẵn trong window.
File .Htaccess không được viết nên từ một ngôn ngữ lập trình nào, nó được viết bởi những quy tắc Regular Expression nên nếu bạn không nắm vững kiến thức này thì thao tác với file .htaccess rất khó khăn. Và nếu bạn chỉnh sửa file với một lỗi dù chỉ là nhỏ thì khi truy cập vào website của bạn sẽ xuất hiện lỗi 500, như vậy là bạn đã HACK được web mình rồi đấy. Vì thế hãy thận trọng khi chỉnh sửa file .htaccess và hãy luôn luôn có một file backup trước khi đụng đến.
II. Một vài quy tắc trong file .htaccess
Có thể dùng ký tự # để đặt trước một dòng mà bạn muốn nó không chạy, tức là chuyển dòng đó sang chế độ chú thích.vd: # nếu bạn đặt dấu # ở đầu thì đây là chú thíchFile .htaccess sẽ có tác dụng với thư mục hiện tại và các thư mục con của thư mục hiện tại.
Nếu file .htaccess bị lỗi thì kết quả sẽ trả về client là lỗi 500. Nên bạn phải cẩn thật khi chỉnh sửa nó và trước khi chỉnh sửa nên copy ra một file dùng làm backup.
Có thể sử dụng file .htaccess để viết lại đường dẫn, bảo vệ thư mục và file, bật chức năng cache và gzip giúp tốc độ trang web được cải thiện hơn. Và còn nhiều điều nữa mà tôi không thể biết hết được.
III. Chức năng của .htaccess
1. Bỏ hoặc thêm WWW cho domain của bạn.
Đôi khi bạn gặp các website có địa chỉ www.domain, nhìn vào ngay từ lúc đầu bạn sẽ cảm thấy nó chỉ là một dạng sub domain, thường thì các website sử dụng dạng www là các công ty, doanh nghiệp, tạo cho mọi người một cảm giác chuyên nghiệp. Còn các website không có www thì thấy nó như môt blog hay website cá nhân.
Tuy nhiên việc sử dụng www nó còn có ý nghĩa sâu xa hơn, và nếu bạn quan tâm tới SEO thì việc sử dụng dạng www sẽ ảnh hưởng tới kết quả SEO của bạn, Cụ thể thì bạn có thể hỏi bác google, còn ở đây mình chỉ hướng dẫn bạn thêm hoặc bỏ định dạng www cho website:
// Thêm WWW vào URL
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.izwebsite.com$ [NC]
RewriteRule ^(.*)$ http://www.izwebsite.com/$1 [L,R=301]
// Không theme WWW vào URL
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^izwebsite.com$ [NC]
RewriteRule ^(.*)$ http://izwebsite.com/$1 [L,R=301]
2. Redirect trang lỗi tới trang thông báo lỗi riêng.
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 xí, không chuyên nghiệp và tạo cảm giác khó chịu khi bị lỗi, đồng thời nếu để mặc định những trang bị lỗi như vậy thì nó cũng ảnh hưởng tới chất lượng website của bạn và khả năng SEO website của bạn.
Nếu bạn tạo ra một trang thông báo lỗi rồi chuyển hướng tất cả các trang lỗi về đó thì bạn có thể tránh được những ảnh hưởng mà tôi nói trên, đồng thời giúp cho website của bạn chuyên nghiệp hơn trong mắt người đọc.
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php
3. Chuyển hướng 301 redirect có lợi cho SEO
Nếu bạn có một website hay một trang nào đó bạn đã xóa đi, bạn muốn chuyển hướng nó tới một website hay một trang mới thì đây là giải pháp cho bạn.Đâ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 trang 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/new.htm
// chuyển domain
RewriteEngine On
RewriteRule ^(.*)$ http://izwebsite.com/$1 [R=301,L]
4. 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 web mình, 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 .htaccessOptions +FollowSymlinks
#No hotlink
RewriteEngine On
RewriteCond %{HTTP_REFERER}!^$
RewriteCond %{HTTP_REFERER}!^http://(www.)?izwebsite.com/[nc]
RewriteRule .*.(gif|jpg|png)$ http://izwebsite.com/images/nohotlink.gif[nc]
5. Bỏ đuôi mở rộng của file .PHP
Khi duyệt web mình muốn địa chỉ URL của mình phải đẹp, chuyên nghiệp, và đôi lúc muốn che giấu công nghệ web của mình đ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]
6. Chuyển đuôi .PHP thành .HTML
Có lý do để khiến bạn làm điều này đó là đuổi .html hổ trợ bạn SEO tốt hơn, đồng thời thì cũng bảo mật công nghệ mình đang áp dụng cho website. Để làm điều này thì bạn vào file .htaccess và thêm dòng sau đây:Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*).html$ $1.php [L]
7. Thêm dấu "/" vào cuối url
Mã nguồn WordPress khi bạn tối ưu URL cho nó xong thì bạn sẽ thấy được có dấu “/” ở sau mỗi URL, điều đó theo thiên hạ đồn 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. Mà đó cũng chỉ là lời đồn, thực hư thì mình chưa được thấy rõ.#Thêm / vào cuối URL
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !#
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://izwebsite.com/$1/ [L,R=301]
8. Cấm IP truy cập vào website
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
9. 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>
10. Đặt password cho thư mục và file
Bạn muốn đặt password cho file hay thư mục nào đó của mình để tránh sự truy cập trái phép từ người ngoài thì bạn có thể thực hiện 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>
11. Chuyển dấu "_" thành dầu "-" 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 ta 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://izwebsite.com/$1 [R=301,L]
12. Đặt lại trang mặc định cho website
Thông thường khi up website lên hosting, nó sẽ nhận dạng các file có tên index.php hoặc index.html để làm trang chủ mặc định cho website của bạn. Vậy nếu bây giờ trang chủ của bạn không phải tên như vậy hay bạn tạo ra một trang mới, và muốn đặt nó làm trang chủ thì bạn vào file .htaccess và chỉnh như sau:DirectoryIndex info.html
13. Bật tính năng nén file GZIP
Nén file GZIP rất quan trọng đối với việc sao lưu và backup dữ liệu. Giúp bạn tải dữ liệu nhanh chóng,AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
14. Bỏ từ "Category" ra khỏi url
Hiện nay thì wordpress hay các cms khác cũng đã có các plugin hổ trợ chúng ta bỏ /catgegory/ ra khỏi url rồi. Nhưng chúng ta cũng có cách đơn giản hơn đó là sử dụng file .htaccessRewriteRule ^category/(.+)$ http://izwebsite.com/$1 [R=301,L]
15. Không cho truy cập file WP_CONFIG.PHP của Wordpress
# Bảo mật file wpconfig.php
<files wp-config.php>
order allow,deny
deny from all
</files>
16. Giới hạn file upload
# Giới hạn đến 10mb
LimitRequestBody 10240000

facebook
twitter
google+
fb share