23
2010
Căn bản về .htaccess
Apache cung cấp khả năng cấu hình qua những files truy cập siêu văn bản .htaccess., cho phép thay đổi tinh chỉnh của Apache (httpd.conf). Đả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.
1.Định nghĩa .htaccess:
Để làm được như vậy, trước tiên bạn cần chmod file .htaccess là 644, về chmod bạn có thể tìm hiểu ở nhiều tài liệu, hoặc google.
.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ốnsử dụng .htacess để quản lí truy cập vào website của mình, đơn giản bạnchỉ việc soạn thảo một file .htaccess, và lưu nó vào thư mục root củawebsite.
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ốnsử dụng một module nào đó trong những available modules, bạn phải xóadấu “#” (hash). Dấu “#” này dùng để định nghĩa một đoạn comment tronghttpd.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 thực thi #trong .htaccess RewriteEngine on
3.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ỗicú pháp nhỏ (thậm chí là một khoản trắng) cũng khiến website của bạnhoạ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ệckhôi phục trở nên đơn giản.
4.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ìnhchí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 đượccấu hình để sử dụng .htaccess, thi Apache sẽ tìm kiếm tất cả nhữngfolder có chứa .htaccess để thực thi, và nó sẽ thực thi tất cả nhữngfile .htaccess tìm được. Do vậy, sẽ làm website của bạn trở nên ì ạchmộ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 đạichú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ềncấu hình trên httpd.conf của Apache.
5.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ạchngang 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 trongtrường hợp trình duyệt gởi yêu cầu duyệt một trang được sửa chữa đườngdẫn (rewrite) trước đó.
[NC]
No-case: Chỉ định server match 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ằngtoá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 %{HTTP_USER_AGENT} ^Anarchie [OR]
RewriteCond %{HTTP_USER_AGENT} ^ASPSeek [OR]
RewriteCond %{HTTP_USER_AGENT} ^attach [OR]
RewriteRule ^.* - [F,L]
Như vậy, mỗi dòng Rewritecond là một biểu thức chỉ địnhUSER_AGENT, nếu bất cứ USER_AGENT nào match, thì RewriteRule sẽ được ápdụng, sau đó ngừng.
Vì sao ngừng: Một request chỉ có mộtUSER_AGENT, vì vậy không cần thiết phải quay trở lại kiểm tra các biểuthứ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ếukhô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ể thực hiện được, vìvậy nếu đã có rule cho iptables và Mod_security, việc thêm rule trêncho .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ácrequest 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ặcsự 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ẽ matchtấ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). VD:
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 đó. VD:
# không cho xem chỉ mục trong một folder nào đó Options All –Indexes
+
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://domain.com/.*$
Thì tất cả request files không mở đầu bằng _http://domain.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?
6. 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.
Ví dụ về việc điều huớng mọi truy cập từ trang “Onclickme.com” chuyển thành “http://www.oneclickme.com”
RewriteEngine On
RewriteCond %{HTTP_HOST} ^oneclickme.com [NC]
RewriteRule ^(.*)$ http://www.oneclickme.com/$1 [L,R=301]
Related Posts
1 Comment + Add Comment
Leave a comment
Sponsors
Tag Cloud
Recent Comments
- Ptxfgmac on Sử dụng CURL để update facebook, login wordpress và nhiều thứ khác
- Uysmbyoh on Sử dụng CURL để update facebook, login wordpress và nhiều thứ khác
- Fmbktiom on Sử dụng CURL để update facebook, login wordpress và nhiều thứ khác
- the pilatesbiz on The Web Developer’s SEO Cheat Sheet
- Albert on Sử dụng các thuộc tính CSS3 cho IE với PIE
- Christian Louboutin Men Shoes on position: fixed in IE
- Boby Banh on 11 bài học để kiếm đựoc $100 đầu tiên từ việc viết Blog
- xu ly anh on 11 bài học để kiếm đựoc $100 đầu tiên từ việc viết Blog
An article by admin













Apple now has Rhapsody as an app, which is a great start, but it is currently hampered by the inability to store locally on your iPod, and has a dismal 64kbps bit rate. If this changes, then it will somewhat negate this advantage for the Zune, but the 10 songs per month will still be a big plus in Zune Pass’ favor.