Hướng dẫn tạo file .htaccess

  • Số trang: 12 |
  • Loại file: PDF |
  • Lượt xem: 2269 |
  • Lượt tải: 12
hoangdieu

Đã đăng 252 tài liệu

Mô tả:

Htaccess mang những tinh chỉnh quan trọng cho nên, người sử dụng phải đảm bảo file này được ấn định một mức độ bảo mật nhất định, tránh những truy cập bất hợp pháp từ bên ngoài (xem, sửa, xóa) những tinh chỉnh này.
Htaccess mang những tinh chỉnh quan trọng cho nên, người sử dụng phải đảm bảo file này được ấn định một mức độ bảo mật nhất định, tránh những truy cập bất hợp pháp từ bên ngoài (xem, sửa, xóa) những tinh chỉnh này. Đầu tiên muốn tìm hiểu những tác dụng cực kì lợi hại của .htaccess chúng ta phải hiểu được .htaccess là gì đã nhé! Phần 1. Căn Bản 1. Định nghĩa: Apache cung cấp khả năng cấu hình qua những files truy cập siêu văn bản . Những files này cho phép thay đổi tinh chỉnh của Apache (httpd.conf) . Theo mặc định file này có tên .htaccess. Do .httaccess mang những tinh chỉnh quan trọng cho nên, người sử dụng phải đảm bảo file này được ấn định một mức độ bảo mật nhất định, tránh những truy cập bất hợp pháp từ bên ngoài (xem, sửa, xóa) những tinh chỉnh này. Để làm được như vậy, trước tiên bạn chmod file .htaccess là 644, về chmod bạn có thể tìm hiểu ở nhiều tài liệu. .htaccess có tác dụng trên thư mục hiện hành (nơi chưa nó) và tất cả các thư mục con. Vì vậy, muốn sử dụng .htacess để quản lí truy cập vào website của mình, đơn giản bạn chỉ việc soạn thảo một file .htaccess, và lưu nó vào thư mục root của website. 2. Comment trong .htaccess: Nếu đã sử dụng và một lần sửa đổi cấu hình Apache thì chắc chắn bạn cũng biết, muốn sử dụng một module nào đó trong những available modules, bạn phải xóa dấu "#" (hash). Dấu "#" này dùng để định nghĩa một đoạn comment trong httpd.conf, và .htaccess cũng vậy. Một ví dụ: #Enable Rewrite mod <<<đây là comment, dòng này sẽ không được ực thi #trong .htaccess writeEngine on Những chú ý quan trọng: .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ản 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. Lời bàn: Những cú pháp sử dụng .htaccess thông dụng được phổ cập rộng rãi ở các website VN đều là những tinh chỉnh ở mức cơ bản, do vậy các bạn khi đọc những dòng chú ý này có thể không quan tâm, nhưng cẩn thận thì vẫn hơn. 3. Vấn đề về performance: .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, thi 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. 4. Những kí tự đặc biệt sử dụng khi cấu hình .htaccess: # Như đã nói ở trên, # đặt trước một dòng để định nghĩa dòng này là một đoạn comment, dòng này sẽ không được thực thi cho đến khi bạn xóa dấu “#” đi. Khi comment, bạn chỉ nên sử dụng các chữ cái, số, dấu gạch ngang hoặc gạch dưới để tránh những lỗi cú pháp không cần thiết. [F] Forbidden: Kí tự này dùng để chỉ định server sẽ trả về client trang lỗi 403 nếu truy cập vào những nơi không được phép [L] Last rule: kí tự này để ấn định rằng bước trước đã xong thì ngừng và không tiếp tục thực thi lệnh rewrite tiếp theo nữa. [N] Next: chỉ thị cho server tiếp tục rewrite cho đến khi tất cả các mục chỉ định được rewrite hoàn toàn. [G] Gone: Chỉ định server trả về client trang báo lỗi không tồn tại (no longer exit) [P] Proxy: chỉ định server điểu kiển các yêu cầu được ấn định bởi mod_proxy [C] Chain: Chỉ định server thực hiện rule hiện hành song song với rule trước đó [R] Redirect: chỉ định server đổi hướng request sang một trang khác trong trường hợp trình duyệt gởi yêu cầu duyệt một trang được sửa chữa đường dẫn (rewrite) trước đó. [NC] No-case: Chỉ định server math nhưng kí tự tương tự nhau, ví dụ dòng lệnh sau: RewriteCond %{HTTP_REFERER} !^http://domain.com/.*$ [NC] #Thì referrer là domain.com || Domain.com || DoMain.com…đều được match. [PT] Pass Through: có nghĩa là dùng kí tự để buộc "rewrite engine" ấn định bảng giá trị của uri trở thành giá trị của tên files [OR] Đây có thể gọi là một toán tử, các biểu thức được nối tiếp nhau bằng toán tử OR, trong đó biểu thức nào đúng, sẽ là quy tắc để lệnh Rewrite áp dụng. Ví dụ: RewriteBase RewriteCond RewriteCond RewriteCond RewriteRule / %{HTTP_USER_AGENT} ^Anarchie [OR] %{HTTP_USER_AGENT} ^ASPSeek [OR] %{HTTP_USER_AGENT} ^attach [OR] ^.* - [F,L] Như vậy, mỗi dòng Rewritecond là một biểu thức chỉ định USER_AGENT, nếu bất cứ USER_AGENT nào match, thì RewriteRule sẽ được áp dụng, sau đó ngừng. Vì sao ngừng: Một request chỉ có một USER_AGENT, vì vậy không cần thiết phải quay trở lại kiểm tra các biểu thức còn lại, sẽ làm giảm hiệu năng phục vụ. Lời bàn: Như ở trên đã nói, bạn chỉ sử dụng những chức năng này của .htaccess nếu không có quyền cấu hình trên Apache và firewall. Những chức năng lọc và chăn User agents Mod_security và Iptables đều có thể chặn, vì vậy nếu đã có rule cho iptables và Mod_security, việc thêm rule trên cho .htaccess là dư thừa, và không cần thiết. [NE] No Escape: Chỉ định server xử lí các gói tin trả về mà không dùng kí tự thoát [NS] No Subrequest: Chỉ định server bỏ qua thư mục hiện hành nếu request nhắm vào thư mục con. [QSA] Append Query String: chỉ định server gắn chuỗi truy vấn vào cuối cùng của URL [S=x] Skip: Chỉ định server bỏ qua không xem xét các X rules tiếp theo nữa nếu một rule đã được thực thi. [T=MIME-type] MIME-type: Khai báo định dạng files của server [] Chỉ định các kí tự đặt đặt trong [] sẽ được match. Cụ thể [xyx] thì các request có mang theo các kí tự x, y hoặc z sẽ được match. []+ Tương tự như trên, nhưng trong trường hợp này, nếu ta đặt [xyz]+ thì tất cả các request có mang theo kí tự x, y, z hoặc x’s, y’s. z’s hoặc sự kết hợp của x,y,z với bất kì kí tự nào đều được match. [^] Ngược lại với [], các kí tự được đặt theo dạng [xyz^] sẽ không được match. [a-z] Dấu ‘-‘ đặt giữa 2 kí tự bên trong cặp dấu [] sẽ match tất cả các kí tự nằm trong khoảng từ kí tự đầu đến kí tự cuối. Ví dụ [a-bA-B] sẽ match tất cả các kí tự thường vào in hoa abcd và ABCD. a{n} Sẽ chỉ định chính xác n kí tự a được match. Ví dụ a{3} thì 3 kí tự a sẽ được match. a{n,} Tương tự như trên, nhưng trong trường hợp này sẽ match các kí tự a từ na trở lên. a{n,m} Chỉ định một khoảng chính xác các kí tự (m-n)a sẽ được match. () Nhóm các phương thức truyền dữ liệu (method). Ví dụ: RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC,OR] Các request bắt đầu (^) HEAD, TRACE, DELETE hoặc TRACK sẽ được match. ^ Bắt đầu bằng (xem ví dụ ở trên). $ Kết thúc bằng ( .*$: kết thúc bằng bất cứ gì) ? Thường dùng chung với (), như trong trường hợp test(ti)? thì test hoặc ti sẽ được match. ! Phủ định. VD: “!string” sẽ match tất cả các kí tự, ngoại trừ string Loại đi một chức năng, hoặc một rule đang thực thi nào đó. Options All –Indexes # không cho xem chỉ mục trong một folder nào đó. + Chỉ định 1 hoặc nhiều kí tự cho trước sẽ được match. Hoặc thêm một chức năng nào đó VD: G+ sẽ match tất cả các kí tự G, Gs, Gx, G.. * Tất cả đều được match. Ví dụ: RewriteCond %{HTTP_REFERER} !^http://giaotrinhcntt.com/.*$ Thì tất cả request files không mở đầu bằng _http://giaotrinhcntt.com đều được match. | Hoặc. Ví dụ x|y thì hoặc x hoặc y sẽ được match. \ Kí tự thoát. VD: www\.domainname\.com Chỉ có www được match, chứ không có wwww hoặc wwwww, domainname chứ không có domainnames hoặc domainnamex… -d Kiểm tra thư mục có tồn tại hay không? -f Kiểm tra file có tồn tại hay không -s Kiểm tra giá trị của file có khác 0 hay không? 5. Mã chuyển hướng trang báo lỗi: - 401 - Authorization Required : Lỗi chưa được xác thực user và password - 400 - Bad request : Lỗi truy cập không hợp lệ, do server không chấp nhận request, hoặc request thiếu một số yêu cầu nào đó. - 403 - Forbidden : Lỗi truy cập vào trang bị cấm - 500 - Internal Server Error : Lỗi do server - 404 - Wrong page : Lỗi truy cập vào trang không tồn tại - 301 - Moved Permanently: 302 - Moved Temporarily: Lỗi truy cập vào trang đã bị di chuyển. Phần 2. Các công dụng cực kì quan trọng của .htaccess: 1.Khắc phục lỗi duplicate content thông qua WWW với .htaccess: Trong thực tế, rất nhiều trang web mắc lỗi duplicate content ( trùng lặp nội dung ). Việc trùng lặp nội dung là những nội dung xuất hiện trên nhiều website khác nhau. Ngoài ra nội dung tương tự về ý cũng được xếp vào danh sách duplicate content. Việc Google tung ra thuật toán Panda đã khiến cho nhiều website trùng lặp nội dung bị phạt và ảnh hưởng rất lớn đến kết quả SEO. Đôi khi các bạn bắt gặp việc website sử dụng "www" trong URL (Ví dụ như http://abc.vn), trong khi có những website lại không dùng "www" này như http://abc.vn. Bạn cần nhớ rằng "tương ứng" với mỗi loại dịch vụ Web, bạn có thể có lựa chọn riêng cho mình. Nhưng không thể chọn cả hai vì sẽ gây ra trùng lặp nội dung. Sau đây là hai ví dụ, hướng dẫn bạn xủ lý triệt để vấn đề này.Vìhttp://www.abc.vn và http://abc.vn là 2 website khác nhau Trùng lặp nội dung được chia làm 3 loại: Bản sao gốc: Đây là dạng website có nội dung hoàn toàn trùng lặp, chỉ khác nhau về URL. Gần giống với bản gốc: Nó có nội dung gần giống với bản gốc chỉ khác nhau về từ ngữ, bố cục và hình ảnh. Cross Domain: Dạng giống một phần của nội dung. Cách này thường xảy ra khi một nội dung được chia sẻ trên 2 trang web khác nhau với mỗi trang web là một phần nội dung gốc. Nên nó có thể là dạng bản gốc hoặc dạng gần giống với bản gốc. Tại sao duplicate content lại bị google phạt? Duplicate content sẽ làm nhiễu thông tin với người dùng do không đem lại thông tin đa chiều và hữu ích đối với người dùng. Trong các phiên bản gần đây của google panda, việc đánh giá nội dung trùng lặp này khá là quan trọng. Nếu trang web của bạn bị google panda đánh giá là không tốt , các thuật toán của nó sẽ tác động đến website của bạn, làm cho trang trùng lặp mất điểm thậm chí bị phạt mất nội dung, thứ hạng trên SERP. Cách khắc phục lỗi Duplicate Content - Nếu Nội dung dung trùng lặp thực sự không đem lại lợi ích cho người tìm kiếm hay nó không đem lại cho bạn những liên kết hay traffic bạn hãy xóa nó đi và để lỗi 404. - Chuyển hướng 301 : đồng nghĩa với việc bạn thông báo cho cả người dùng và bọ tìm kiếm rằng trang web mà họ trang truy cập đã chuyển đến một địa chỉ khác. Và công cụ này sẽ chuyển hướng người dùng đến một url đích. Đây là một cách làm tốt nếu nội dung trùng lặp đó nằm trên URL gắn thẻ canonical. - Robots.txt : Đây là phương pháp được dùng khi bạn muốn nội dung trùng lặp hiển thị với người dùng nhưng ngăn chặn không cho bọ tìm kiếm thu thập thông tin. Điều này được thực hiện khá đơn giản. Tuy nhiên nó chỉ hiệu quả với các trang chưa index , còn với các trang đã được index thì nó vô tác dụng. - Meta Robots Tag : Cách này được áp dụng nếu bạn muốn điều hướng khả năng tìm kiếm thông tin của bots tại trang. Nó sẽ thông báo cho bots tìm kiếm không index trang này hoặc các liên kết trong đó. Cái này được khá nhiều công ty SEO áp dụng và làm cho trang thân thiện hơn với search engine so với sử dụng Robots.txt - Rel=canonical hay "canonical Tag" : cách làm này giúp webmaster có thể tạo ra canonical cho bất kỳ trang nào. Vì vậy, khi bots tìm kiếm thu thập thông tin trên một trang có gắn thẻ canonical nó sẽ hiểu và loại bỏ nội dung trùng lặp trên URL đó. - Google URL Removal : Cách làm này là phương pháp cuối cùng nếu phải thực hiện việc xóa bỏ các nội dung trùng lặp. Nó được sử dụng trong google webmaster tool. Để làm được bạn làm theo các bước sau : Đăng nhập vào google webmaster tool : Click vào “Site Configuration” click tiếp “Crawler Access” Sau bước này bạn sẽ thấy hiển thị ra 3 tab. Hãy click vào cái thứ 3 “Remove URL” . Tuy nhiên bạn sẽ cần làm một số việc trước để có thể thực hiện xóa là với trang cần xóa bạn cần 404, Robots.txt blog hay thẻ meta Noindex. Để cài đặt có WWW và không có NON-WWW bên cạnh việc sử dụng file .htaccess để redirect về dạng chúng ta cần SEO (landinpage) nhằm tránh trùng lặp nội dung.Ta nên verify add cả 2 loại có www và không có www rồi vào mục cài đặt trong phần quản trị domain của Webmaster tool Google lựa chọn. - Để tránh trùng lặp về nội dung trên website của bạn vào file .htacess và sửa lại như sau : Tên miền có sửa dụng www: RewriteEngine On RewriteCond %{HTTP_HOST} ^abc.vn\.org RewriteRule (.*) http://www.abc.vn/$1 [R=301,L] - Tên miền không sử dụng www: RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.abc.vn\.org RewriteRule (.*) http://abc.vn/$1 [R=301,L] 2. 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/new.htm // Chuyển domain RewriteEngine On RewriteRule ^(.*)$ http://giaotrinhcntt.com/$1 [R=301,L] 3. 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 .htaccess Options +FollowSymlinks #No hotlink RewriteEngine On RewriteCond %{HTTP_REFERER}!^$ RewriteCond %{HTTP_REFERER}!^http://(www.)?giaotrinhcntt.com/[nc] RewriteRule .*.(gif|jpg|png)$ http://giaotrinhcntt.com/images/nohotlink.gif[nc] 4. Bỏ đuôi mở rộng của file web ".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] 5. 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] 6. 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. #Thêm / vào cuối URL RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !# RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ http://giaotrinhcntt.com/$1/ [L,R=301] 7. 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 8. 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 order allow,deny deny from all 9. Đặ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 của mình, 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 AuthType Basic AuthName "Prompt" AuthUserFile /home/path/.htpasswd Require valid-user 10. 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 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://giaotrinhcntt.com/$1 [R=301,L] 11. 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 12. 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. Bạn vào trong file .htaccess và làm như sau: AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml ap 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 13. Bỏ từ “category” ở URL: RewriteRule ^category/(.+)$ http://giaotrinhcntt.com/$1 [R=301,L] 14. Không cho truy cập file wp-config.php của WordPress: Một ứng dụng nhỏ mà rất quan trọng trong việc bảo mật file đã đề cập ở trên. 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 order allow,deny deny from all 15. 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 … theme vào trong file. htaccess đoạn code sau: # Giới hạn đến 10mb LimitRequestBody 10240000 16.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 xí, 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 đã định sẳn. ErrorDocument 401 /error/401.php ErrorDocument 403 /error/403.php ErrorDocument 404 /error/404.php ErrorDocument 500 /error/500.php 17.Khắc phục lỗi 500 - Internal Server Error khi sử dụng .htaccess: Một số code sử dụng file .htaccess thường hay bị lỗi 500 – Internal Server Error: Cách khắc phục như sau: Open file .htaccess tìm: Options +FollowSymlinks Options -Indexes Xóa 2 dòng này đi. Phần 3. Kết Luận: Như đã nói ở đầu, nếu bạn biết cách vận dụng tập tin .htaccess vào trong việc quản lý, tùy chỉnh WEB và host thì rất tuyệt vời, tiết kiệm công sức và hiệu quả thì mang lại rất cao. Chúc các bạn thành công!
- Xem thêm -