Thứ Ba, 27 tháng 8, 2013

File .htaccess là gì ? những điều bạn cần biết.

By Unknown   Posted at  23:30   Hosting và domain No comments

Bạn đã bao giờ nghe nói đến .htaccess chưa? Bạn có biết cách sử dụng .htaccess chứ? Nếu bạn là một lập trình viên, một quản trị web và thường thao tác với hosting thì bạn nên tìm hiểu về nó vì bạn sẽ phải thường xuyên tiếp xúc với file .Htaccess này trong công việc của mình đấy. Bài viết này mình sẽ hướng dẫn các bạn toàn tập file này.



1. File Htaccess là gì ?

Đây là một file thường nằm trong thư mục root của hosting. Các web server như Apache sử dụng nó để cấu hình bảo mật các thư mục trên host. Khi truy cập một thư mục có chứa file .htaccess thường là thư mục root sẽ có một hộp thoại yêu cầu nhập username và password, chỉ khi nào bạn nhập đúng mật khẩu mới có thể xem được trong thư mục root có gì.

Tại sao file này có dấu chấm “ .” đó là do các web server qui định những file có dấu “.” Đằng trước là file cấu hình , và các file này sẽ bị ẩn đi khi bạn duyệt các thư mục được bảo vệ bằng file .htacces. Nó có thể điều khiển, cấu hình được nhiều việc hữu ích bằng cách thay đổi các thông số mặc định do apache quản lý. File .htaccess có tác dụng trên thư mục chứa nó và toàn bộ các thư mục con chính vì thế .htaccess thường được lưu trữ trên thư mục root nhằm bảo mật thông tin cho website của bạn. Chính vì liên quan tới vấn đề bảo mật nên .htaccess phải có sự bảo mật riêng để tránh sự truy cập trái phép từ bên ngoài và thông thường nó được chmod 644.

.htaccess là một công cụ rất mạnh trong việc quản lí website. Một lỗi cú pháp nhỏ (thậm chí là một khoảng trắng) cũng khiến website của bạn hoạt động không được bình thường như trước. Sau khi áp dụng .htaccess, bạn nên kiểm tra một lượt website của mình xem .htaccess có gây ra lỗi ở phần, trang con nào không? Do vậy trước khi làm việc với .htaccess, bạn nên backup cẩn thận dữ liệu của mình, nếu có trục trặc xảy ra, việc khôi phục trở nên đơn giản.

.htaccess cho phép bạn cấu hình mà không cần động chạm vào cấu hình chính của Apache. Tuy nhiên, về mặt hiệu năng và bảo mật, nếu có thể, bạn nên sử dụng httpd.conf hơn là sử dụng .htaccess. Cụ thể, khi được cấu hình để sử dụng .htaccess, thì Apache sẽ tìm kiếm tất cả những folder có chứa .htaccess để thực thi, và nó sẽ thực thi tất cả những file .htaccess tìm được. Do vậy, sẽ làm website của bạn trở nên ì ạch một cách không cần thiết. Nếu website của bạn là website cá nhân, hoặc ít người truy cập, thì đó là chuyện nhỏ. Nhưng nếu là một website đại chúng (báo điện tử, trang nhạc, film..) thì đây là một vấn đề rất lón. Do vậy .htaccess chỉ có tác dụng trong trường hợp bạn không có quyền cấu hình trên httpd.conf của Apache.
Những vấn đề thường gặp có thể xử lý bằng .htaccess.

2. Bỏ hoặc thêm www cho domain

Bạn nghĩ rằng domain website dạng www.domain.com và http://domain.com là 1? Nhưng Searrch Engine không nghĩ như vậy họ xem 2 URL trên là 2 cái khác nhau chính vì thế khi làm SEO cho web bạn phải chú ý vấn đề này. Phải thực hiện redirect về một trang 2 dang URL trên.

Trường Hợp Thêm WWW vào URL
RewriteEngine OnRewriteBase /RewriteCond %{HTTP_HOST} !^www.$ [NC]RewriteRule ^(.*)$ http://www./$1 [L,R=301]
Ví Dụ:
RewriteEngine OnRewriteBase /RewriteCond %{HTTP_HOST} !^www.fcwc.eazy.vn$ [NC]RewriteRule ^(.*)$ http://www.fcwc.eazy.vn/$1 [L,R=301]
Ngoài ra còn có cách viết sau có thể áp dụng cho tất cả các host và domain, không phải edit lại
Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^www\.[a-z-]+\.[a-z]{2,6} [NC] RewriteCond %{HTTP_HOST} ([a-z-]+\.[a-z]{2,6})$ [NC] RewriteRule ^/(.*)$ http://%1/$1 [R=301,L]
Trường Hợp Không thêm WWW vào URL
RewriteEngine OnRewriteBase /RewriteCond %{HTTP_HOST} !^domain$ [NC]RewriteRule ^(.*)$ http://domain/$1 [L,R=301]

3. Cấm truy cập với 1 ip hoặc dải ip cụ thể

Đôi khi để hạn chế truy cập từ 1 ip hoặc dải ip nào đó vì lí do spam bạn có thể sử dụng những dòng lệnh sau:
allow from alldeny from 124.90.94.138deny from 124.90
Dòng thứ 2 dùng để chặn 1 ip còn dòng thứ 3 là chặn luôn một dải ip. bạn có thể thay địa chỉ ip tương ứng vào đoạn code phía trên.

4.Bỏ “category” trong URL của wordpress

#Thêm / vào cuối URL
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !#
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://domain/$1/ [L,R=301]

5. Chống hotlink

Nhiều người copy bài viết của bạn và copy luôn cả link ảnh gây hao tốn băng thông của website để ngăn chặn việc này bạn sử dụng đoạn lệnh sau:
Options +FollowSymlinks
#No hotlink
RewriteEngine OnRewriteCond %{HTTP_REFERER}!^$RewriteCond %{HTTP_REFERER}!^http://(www.)?domain/[nc]RewriteRule .*.(gif|jpg|png)$ http://domain/images/nohotlink.gif[nc]

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

Rất nhiều người sử dụng wordpress để thiết kế web và đã quá quen thuộc với file wp-config.php, đây là file rất quan trọng vì nó chứa thông tin username và password database chính vì thế cần có chế độ bảo vệ thích hợp với những dòng lệnh sau:
# Bảo mật file wpconfig.phporder allow,denydeny from all

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

Với tính năng này các file trên server được nén giúp cho website tải nhanh hơn
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

8. Giới hạn kích thước file upload

Cấp phép cho người dùng upload lên host với một kích thước nhất định sẽ hạn chế được hao tốn tài nguyên. đoạn lệnh dưới đây giới hạn upload là 10MB
# Giới hạn đến 10mbLimitRequestBody 10240000

9. Bỏ phần mở rộng của file có đuôi .php

khi bạn lập trình web bằng php thì URL thường có phần mở rộng là .php. Vì lý do nào đó bạn muốn URL trong sạch sẽ không có đuôi .php ở sau lúc đó bạn sử dụng đoạn code dưới đây.
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

10.Chuyển toàn bộ đến tên miền mới

Nếu bạn quyết định thay đổi tên miền thì các đường dẫn trước đây từ các website bên ngoài, từ máy tìm kiếm và ngay cả các đường dẫn tuyệt đối trên website cũ đều bị thay đổi và khi bạn truy cập, các địa chỉ trên sẽ trỏ bạn đến trang báo lỗi 404 : trang không tìm thấy.
Vì thế nếu bạn thay đổi tên miền thì đừng để mất các liên kết quí báu và người dùng tiềm năng từ máy tìm kiếm, hãy redirect các liên kết cũ tới tên miền mới :
Options +FollowSymLinks RewriteEngine on RewriteRule (.*) http://www.domainnew/$1 [R=301,L]

11. Redirect toàn bộ trang trong một thư mục đến mọt trang mới

Giả sử như bạn không còn sử dụng thư mục “thuthuatseo” nữa và muốn chuyển tất cả các trang trong thư mục này đến trang “seoblog.php” thì hãy thêm dòng lệnh sau vào tệp tin .htaccess nằm tại thư mục gốc :

RewriteRule ^domain(.*)$ /seoblog.php [L,R=301]

12. Chuyển các trang động tới một trang mới

Để chuyến trang web động page.php?id=n (với n là giá trị biến) tới một trang tĩnh mới new-page.html thì bạn có thể làm như sau :
RewriteRule ^page.php?id=(.*)$ /new-page.htm [L,R=301]

13.Loại bỏ Query_String

Đôi khi một trang web của bạn có thể hiển thị hai đường dẫn url khác nhưng ( cùng một nội dung) ví dụ seo-tools.phpvà seo-tools.php?v=mobile. Tương tự như phần trên, điều này sẽ tạp ra nội dung trùng lặp trên website của bạn. Vì vậy bạn có thể loại bỏ các tham biến như sau :
RewriteCond %{THE_REQUEST} ^GET\ /.*\;.*\ HTTP/ RewriteCond %{QUERY_STRING} !^$ RewriteRule .* http://domain%{REQUEST_URI}? [R=301,L]
Ngoài ra nếu như tham biến QUERY_STRING không được gấn giá trị nào hết và URl kết thúc bởi biến rỗng “?”, thì bạn nên loại bỏ chúng, ví dụ “index.php?” :
RewriteEngine On RewriteBase / RewriteCond %{QUERY_STRING} . RewriteRule ^index.php /index.php? [L]

14. Chuyển gạch dưới (_) thành gạch ngang(-)

Dù Google mới chấp nhận việc sử dụng gạch dưới “_” như là ký tự ngăn cách, nhưng trong thực tế người dùng vẫn quen thuộc với dấu gạch ngang “-”. Bản thân seovietnam cũng ủng hộ dấu gạch ngang vì nó dễ nhìn hơn. Bạn có thể chuyển đổi toàn bộ dấu “_” sang “-” như 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/$1 [R=301,L]

16. Tạo trang báo lỗi riêng

Bạn không muốn dùng các trang báo lỗi có sẵn của host, bạn có thể tạo các trang báo lỗi riêng và cấu hình vào file .htaccess như sau:
ErrorDocument 401 /error/401.phpErrorDocument 403 /error/403.phpErrorDocument 404 /error/404.phpErrorDocument 500 /error/500.php

17. Đặt email mặc định cho server admin

Sử dụng đoạn mã sauServerSignature EMailSetEnv SERVER_ADMIN admin@blogspot.com

18. Bảo vệ file

Đoạn mã dưới đây sẽ từ chối khi người dùng truy cập vào bất kỳ file nào và gửi về lỗi 403.
#Bảo vệ .htaccess File
order allow,deny
deny from all

About the Author

Nulla sagittis convallis arcu. Sed sed nunc. Curabitur consequat. Quisque metus enim, venenatis fermentum, mollis in, porta et, nibh. Duis vulputate elit in elit. Mauris dictum libero id justo.
View all posts by: BT9

0 nhận xét:

Back to top ↑
Connect with Us

What they says

© 2013 abcdasdasd. WP Mythemeshop Converted by BloggerTheme9
Blogger templates. Proudly Powered by Blogger.