Sunday, April 17, 2011

Các cách sử dụng file .htaccess bạn nên biết

File .htaccess(hypertext access) của apache là một công cụ cực kỳ hữu dụng. File .htaccess thường được tìm thấy trong thư mục root của website, bạn có thể dễ dàng sửa chữa nó bằng bất kỳ text editor nào. Bạn nên sao lưu lại file .htaccess của mình trước khi thử nghiệm các cách hack dưới đây.

Open your httpd.conf and check the AllowOverride directive. It should be like;

AllowOverride AuthConfig

See details for Authentication on Apache.

1. Ngăn chặn hotlink

Nhiều người copy ảnh từ server của bạn và đưa lên trang web của họ. Thêm vào .htaccess đoạn mã dưới đây sẽ giúp bạn ngăn chặn ảnh hiển thị trên website khác

Options +FollowSymlinks

#Ngăn chặn hotlink

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^$

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

RewriteRule .*.(gif|jpg|png)$ http://vannyneo.com/img/stop_stealing_bandwidth.gif[nc]

2. 301 Redirect

Nếu bạn chuyển domain, hoặc chỉ muốn chuyển một trang cũ về một trang mới và không muốn lo lắng về các kết quả search từ google, sử dụng đoạn mã sau

Redirect 301 /d/file.html http://www.vannyneo.com/r/file.html

3. Chuyển hướng từ tên miền cũ sang tên mới

Sử dụng đoạn mã dưới đây bạn có thể chuyển tất cả các link từ tên miền cũ sang tên miền mới:

#Chuyển hướng từ tên miền cũ sang tên mới

RewriteEngine On

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

4. 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.php

ErrorDocument 403 /error/403.php

ErrorDocument 404 /error/404.php

ErrorDocument 500 /error/500.php

5. Cấm IP truy cập

Nếu có 1 IP thường xuyên spam website của bạn, bạn có thể cấm IP đó như dòng 2, hoặc cấm 1 dải IP như dòng 3:

allow from all

deny from 113.190.183.138

deny from 113.190

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

Sử dụng đoạn mã sau

ServerSignature EMail

SetEnv SERVER_ADMIN default@vannyneo.com

7. 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

5

8. Đặt mã cho thư mục và file

Bạn có thể đặt mã & quyền truy cập vào thư mục/file như sau:

# Đặt mã 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 mã cho file

AuthType Basic

AuthName "Prompt"

AuthUserFile /home/path/.htpasswd

Require valid-user

9. Đặt trang mặc định

Bạn có thể đặt trang web mặc định cho thư mục nào đó. Ví dụ đặt file about.html thay cho file index.html:

#Đặt trang mặc định (index)

DirectoryIndex about.html

10. Nén file bằng cách bật Gzip

Bằng cách bật Gzip bạn có thể nén file từ server giúp cho việc tải trang 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

11. Bỏ "category" ở URL

Để chuyển url từ: http://vannyneo.com/category/tong-hop về -> http://vannyneo.com/tong-hop, bạn chỉ cần thêm vào file .htaccess đoạn mã sau

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

12. Bỏ phần đuôi file ở URL

Bạn mới lập trình php và không muốn hiện .php ở url, hãy thêm đoạn code sau:

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

13. Thêm / vào cuối URL

Một vài bộ máy tìm kiếm (như Yahoo)tự động bỏ dấu / ở cuối url. Website của bạn cũng có thể được truy cập có hoặc không có dấu / ở sau cùng url. Điều này không tốt với các bộ máy tìm kiếm (sẽ bị coi là duplicated content). Thêm đoạn mã dưới đây vào .htaccess để giải quyết vấn đề đó

#Thêm / vào cuối URL

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !#

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

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

14. Bỏ www ở URL

Nếu bạn muốn chuyển mọi truy cập từ http://www.example.com thành http://example.com, thêm đoạn mã sau vào file .htaccess:

RewriteEngine On

RewriteBase /

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

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

15. Thêm www vào URL

Tất nhiên nếu bạn muốn ngược lại "14" bạn có thể dùng đoạn mã sau

RewriteEngine On

RewriteBase /

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

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

16. Không cho "browse" thư mục

Để ngăn chặn truy cập vào tên file trong thư mục nào đó (ví dụ thư mục plugins của wordpress), thêm đoạn mã sau vào file .htacess:

Options All -Indexes


ở file .htaccess bạn thêm vào:
order allow,deny
deny from [ip cần cấm]
deny from [1 ip khác]
deny from [1 vài ip khác]
allow from all

cấu trúc IP VD: 210.245.24.22

order deny,allow
deny from all
allow from 58.186.101.237
allow from 58.186.101.236

Liên kết http://www.truongchieu.0fees.net/Forum/tintuc/66/Cac-Ki-Thuat-Toi-Uu-Hoa-Trang-Web/Cac-cach-su-dung-file--htaccess-ban-nen-biet.html#

http://my.opera.com/manhtn/blog/su-dung-htaccess-va-htpasswd

Ha..ha...hôm nay ta đã hiểu .htaccess và htpasswd làm gì rồi.....nó được sử dụng trên webserver Apache, rất hữu ích khi sử dụng trong trang web như giấu link, giấu file, tự động link sang trang mới,....làm cho website mạnh mẽ và an toàn hơn.

1.Thiết lập chế độ để sử dụng được 2 file này.
Tìm file cấu hình của Apache thường là httpd.conf(hoặc là access.conf) tìm và thay thế đoạn mã AllowOverride None thành AllowOverride AuthConfig rồi save nó. Khởi động lại Apache là có thể sử dụng 2 file này.

2.Tạo 2 file này.
Sử dụng notepad để soạn thảo hoặc có thể sử dụng bất cứ trình soạn thảo nào lưu lại nó với tên .htaccess và .htpasswd

3.Sử dụng 2 file trên.
+, Tạo Trang báo lỗi:
Trong quá trình làm việc với client, nếu có lỗi xảy ra thì Apache sẽ báo lỗi bằng một trang có sẵn hiển thị mã lỗi đó. Khi sử dụng .htaccess có thể tự tạo trang báo lỗi riêng cho mình.
Để làm được điều đó thì trong tập tin .htaccess thêm các dòng như sau:
ErrorDocument mã số lỗi/trangloi.html
trong đó số mã lỗi là số mã lỗi phát sinh khi truy cập trang web, đây là những lỗi thường gặp:
. 401 - Authorization Required(yêu cầu password để truy cập)
. 400 - Bad required(yêu cầu lỗi)
. 403 - Forbidden(không được vào)
. 500 - Internal Server Error(lỗi do Server)
. 404 - Wrong page(lỗi trang, có thể không tìm thấy trang)
còn trangloi.html là trang web muốn hiển thị lỗi phát sinh, có thể đưa vào trang này bất cứ nội dung gì, chẳng hạn liên kết trở về trang chính của trang web.
ví dụ: gõ vào trong tập tin .htaccess như lỗi 404 như sau: ErrorDocument 404/trangloi.html

+, Chống ăn cắp băng thông(badwidth)
Thông thường những dịch vụ lưu trữ web cung cấp cho một lượng dữ liệu luân chuyển(data transfer) nhất định hàng tháng khi sử dụng hết lượng dữ liệu này, website sẽ tự động bị đóng cửa. Và sẽ phải trả thêm tiền cho lượng băng thông vượt quá hoặc phải buộc lòng chờ đến tháng sau.

Nếu hình ảnh, dữ liệu, ... bị các website khác "chôm chỉa"(thường là sử dụng thủ thuật đơn giản) làm cho lượng dữ liệu luân chuyển tăng lên, thì sẽ phải trả thêm tiền cho cái mà mình không sử dụng. Sử dụng tập tin .htaccess là một giải pháp rất tốt! Để ngăn chặn việc sử dụng trái phép hình ảnh trên website. Chỉ cần đưa vào tập tin .htaccess nội dung sau:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?trangweb\.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]

chỉ cần thay đổi trangweb.com thành địa chỉ website của mình là ok.

Có thể sử dụng hình ảnh nào đó cảnh báo những kẻ "chôm chỉa" băng thông sử dụng dòng lệnh sau:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?trangweb\.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.trangweb.com/diehotlinker.jpg [R,L]

+, Không cho hiện danh sách tập tin trong thư mục.
Trong trường hợp một thư mục nào đó không có tập tin index hay default, thì Apache sẽ hiển thị một danh sách liệt kê các tập tin trong thư mục đó. Tuy nhiên nếu đây là những tài liệu nhạy cảm, không muốn người khác thấy, thì thêm vào file .htaccess dòng lệnh sau:
Options –Indexes

+, Thay thế trang index
Thông thường khi truy nhập vào một trang web, Apache sẽ tìm đến tập tin index.html hoặc default.html để tra kết quả về cho trình duyệt, có thể sử dụng .htaccess để thay đổi mặc định này:
DirectoryIndex index.php index .php3 messagebrd.pl index.html index.htm

với dòng lệnh này thì các tập tin được liệt kê sẽ được tìm theo thứ tự khi có yêu cầu tới thư mục hiện hành, trang nào được tìm thấy đầu tiên sẽ là trang index của thư mục.

+, Cấm hạn chế IP truy nhập
Một số người muốn làm "lụt"(flood) trang web, việc cần làm là ngăn cấm những IP của những người này truy cập vào trang web, thêm đoạn mã sau vào .htaccess:
dùng để ngăn cấm địa chỉ IP là 203.262.110.20 truy cập vào trang web.
deny from 203.262.110.20

Cho phép địa chỉ IP truy nhập trang web:
allow from 203.262.110.20

Nếu sử dụng IP dưới dạng: 203.262.110 thì sẽ cấm tất cả các IP có địa chỉ từ 203.262.110.1 đến 203.262.110.254.

Cấm tất cả mọi truy cập đến trang web trong thư mục sử dụng:
deny from all

tuy nhiên các tập tin trong đó vẫn có thể sử dụng từ bên ngoài thông qua các lệnh dạng require hay include(trong lập trình PHP).

+, Bảo vệ thư mục.
sử dụng 2 file .htaccess và .htpasswd trong cho việc bảo vệ thư mục và chống flood.
tạo file .htaccess có nội dung như sau:
AuthUserFile “đường dẫn đến tập tin .htpasswd”
AuthName “dòng văn bản hiển thị”
AuthType Basic
require valid-user

trong đó valid-user sẽ chỉ định các thành viên với mật khẩu trong tập tin .htpasswd, nếu bạn muốn định rõ một thành viên nào đó thì thay đổi dòng này như sau:
require user tên_user

sau đó tạo một file .htpasswd với nội dung như sau:
User: password

gõ tên user đăng nhập rồi đến dấu ":" rồi gõ mật khẩu đăng nhập.
ví dụ sử dụng file .htaccess như sau:
AuthUserFile "/home/username/public_html/forum/.htpasswd"
AuthName "Anti Stupid Flooders! User=anti Pass=1 khoang trang"
AuthType Basic
require valid-user

Ở đây /home/username/public_html/forum/.htpasswd ->chính là đường dẫn đến tập tin .htpasswd
User=anti Pass=$# là dòng chữ hiện lên trên bảng đăng nhập, muốn viết gì cũng được.

+, Tự động chuyển đến địa chỉ mới
Muốn chuyển trang web đến địa chỉ mới, redirect truy cập từ xa bằng một lệnh đơn giản sau:
Redirect/olddirectory http://www.trangwebmoi.com/thumucmoi

+, Tùy biến đuôi tập tin.
Thông thường tùy thuộc vào ngôn ngữ lập trình web mà sử dụng tập tin có phần mở rộng khác nhau như: html, htm, asp, aspx, php, cgi, ...Tuy nhiên nếu sử dụng .htaccess thì có thể tác động vào máy chủ Apache, Apache sẽ gọi đến tập tin và trả về cho trình duyệt web với phần mở rộng do mình quy định trong .htaccess. Sử dụng đoạn lệnh sau trong tập tin .htaccess:
RewriteEngine on
RewriteRule (.*)\.dll$ $1.html

html là phần mở rộng thực sự của những tập tin trên website, dll là phần mở rộng do mình lựa chọn. Chú ý liên kết trên trang web, phải gọi đúng đường dẫn đến tập tin với phần mở rộng mới(ở trên là dll), ví dụ như: http://www.trangweb.com/index.dll
+, để sử dụng
--->Chú ý khi sử dụng .htaccess
. - Chỉ sử dụng .htaccess trên Apache đã bật chế độ .htaccess, nếu chưa có thì liên hệ với nhà cung cấp hosting để họ có thể đáp ứng.
. - .htaccess chỉ có tác dụng với những tập tin ngang hàng(trong cùng thư mục với nó) hoặc thư mục con. Với thư mục thì nó chỉ có tác dụng với thư mục chứa nó và thư mục con. Không có tác dụng với các thư mục cha, mẹ.
. - Có thể sử dụng một số chương trình FTP (Leaf FTP, WS FTP, Cute FTP) để tải tập tin .htaccess lên hosting của mình với chế độ ASCII, nếu nó không hoạt động có thể CHMODE với giá trị 644.

2 comments:

Anonymous said...
This comment has been removed by the author.
Anonymous said...

Nhớ ghi rỏ nguồn nha bạn. Bài này của Ntuts mà

Router Packet Networking

Đây là video ngắn khá hay, mô tả đường đi của một gói tin trên Mạng Internet.