Tâm trạng hàng ngày | Suy ngẫm 22-4-2024 05:18 PM |
|---|
Đã viết: 4 ngày [LV.2]Spam 2
|
Mời bạn đăng ký để giao lưu kết bạn nhé <3
Bạn phải đăng nhập để xem được nội dung, nếu bạn chưa có tài khoản? hãy Đăng ký
x
Trong bài này mình sẽ nói nhiều hơn về các tiện tích của .htaccess như:
|- Tạo trang báo lỗi 404 bằng .htaccess
|- Cấm truy cập theo địa chỉ IP
|- Lựa chọn Index Files
|- Redirection
|- Tạo mật khẩu bảo vệ thư mục nhạy cảm
|- Tùy biến URL với mod_rewrite
Tạo trang báo lỗi 404 bằng .htaccess
Khi sử dụng host free đối với cá nhân tớ (có lẽ là tất cả mọi người nữa) điều khó chịu nhất có lẽ là mỗi khi nhập sai url (địa chỉ không tồn tại) trang web sẽ tự động đựa người dùng đến với trang quảng cáo của nó. Họ sẽ nhận được những thông tin vô bổ và đâm ra bực mình. Nhưng nếu may mắn host bạn đang dùng có hỗ trợ .htaccess bạn hoàn toàn có thể tạo một trang báo lỗi riêng cho mình.
Trước tiên hãy hãy tạo một file .htaccess với nội dung như sau:
DirectoryIndex index.php
RewriteEngine On
ErrorDocument 400 /400.php
ErrorDocument 401 /401.php
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 500 /500.php
Upload lên thư mục root của web. Từ nay mỗi khi người sử dụng gõ vào một địa chỉ sai. Trình duyệt sẽ tự động chuyển đến trang báo lỗi tương ứng.
Ví dụ: lỗi không tìm thấy tài liệu "Page Not Found" trình duyệt sẽ chuyển tới trang 404.php. Tất nhiên trang 404.php bạn đã tạo sẵn và upload lên thư mục root rồi.
Cấm truy cập theo địa chỉ IP
Trong một vài trường hợp, bạn chỉ muốn một số người truy cập vào một thư mục nào đó, hoặc muốn cấm truy cập đối với một người nào đó. Không cho phép IP của họ truy cập vào website có lẽ là cách khả dụng nhất. Vì nếu bạn block tài khoản của họ. Họ sẽ đăng ký một cái khác khá dễ dàng.
Bạn có thể cấm truy cập bằng cách sử dụng mã sau:
deny from 000.000.000.000
Dãy 000.000.000.000 là địa chỉ IP bạn cấm truy cập.
Nếu bạn muốn cho phép người nào đó truy cập, có thể dùng mã sau:
allow from 000.000.000.000
Cũng như trên dãy 000.000.000.000 là địa chỉ IP được phép truy cập.
Nếu bạn muốn cấm tất hãy dùng mã sau:
deny from all
Nhưng nó vẫn sẽ chấp nhận các script sử dụng nó (như một lệnh include trong php chẳng hạn).
Lựa chọn Index Files
Nếu bạn không muốn sử dụng dạng file index.htm hoặc index.html làm file mặc định cho website. Bạn có thể dùng mã sau:
DirectoryIndex index.php index.php3 index.html index.htm
Nó sẽ chấp nhận file index.php làm file mặc định (theo thứ tự ưu tiên nếu không có file index.php nó sẽ tìm xem có file index.php3 không v.v).
Redirection
Mã này dùng đển chuyển trình duyệt đến một thư mục khác hay một địa chỉ web khác:
Redirect /location/from/root/file.ext http://www.othersite.com/new/file/location.xyz
Mã trên sẽ chuyển nhưng ai truy cập vào http://www.domain_cua_ban.com/location/from/root/file.ext đến địa chỉ http://www.othersite.com/new/file/location.xyz
Tương tự đối với thư mục:
Redirect /olddirectory http://www.newsite.com/newdirectory
Và những yêu cầu truy cập đến các file của thư mục này sẽ được chuyển sang thu mục mới.
Ví dụ:Yêu cầu file ảnh
http://www.web_site_cu.com/thu_muc_cu/oldfiles/images/image.gif
Nó sẽ chuyển sang sử dụng file ảnh tại địa chỉ:
http://www.website_moi/thu_muc_moi/oldfiles/images/image.gif
Tạo mật khẩu bảo vệ thư mục nhạy cảm
.htaccess cung cấp khả năng bảo vệ thư mục rất cao. Nó có khả năng tạo mật khẩu bảo vệ thư mục nhạy cảm của bạn. Việc này tỏ ra rất cần thiết khi bạn không muốn mọi người tiếp cận các thư mục chứa những tài liệu quan trọng của mình. Hơn nưa việc này lại khá dễ dàng bằng cách sử dụng các thẻ lệnh được cung cấp sẵn.
.htaccess File
Thêm mật khẩu bảo vệ cho thư mục bạn cần làm 2 bước sau. Đầu tiên hãy thêm các lện sau vào file .htaccess tại thư mục bạn cần thiết lập mật khẩu bảo vệ. Trong bất cứ trường hợp nào thư mục này sẽ luôn được bảo vệ bằng cách yêu cầu nhập vào mật khẩu:
AuthName "Section Name"
AuthType Basic
AuthUserFile /full/path/to/.htpasswd
Require valid-user
Ở trên bạn có thể thay "Section Name" tùy ý bạn muốn. Nó chính là thông báo thư mục của bạn đã được bảo vệ bởi mật khẩu. Bí dụ: "Thư mục đã được bảo vệ xin hãy đăng nhập".
Dòng /full/parth/to/.htpasswd có thể thay đổi tùy theo bạn chọn nơi giữ file .htpasswd (nó chính là file chứa tài khoản và mật khẩu đăng nhập, mình sẽ nói đến sau).
Bước 2 tạo .htpasswd file
.htpasswd File
Mật khẩu bảo vệ được lưu giữ tại file này. Bạ hãy sử dụng mật khẩu có độ dài lớn hơn 8 ký tự để đảm bảo an toàn. Nếu bạn hoặc ai đó nhập đúng mật khẩu bảo vệ thì sẽ có quyền truy cập vào thư mục này
Thiết lập mật khẩu bảo vệ
Bạn hãy tạo một file tên .htpasswd. Nội dung file này như sau:
username:password
Như vậy là bạn đã tạo xong tài khoản và mật khẩu bảo vệ thư mục của mình.
Tạo nhiều tài khoản: mỗi tài khoản là một dòng trong file .htpasswd
Accessing The Site
Khi bạn truy cập vào thư mục đã được bảo vệ. Một khung sẽ hiện lệ yêu cầu nhập vào tài khoản và mật khẩu.
Nếu bạn không thích nó, có thể nhập trực tiếp trên trình duyệt, hãy gõ vào thanh url như sau:
http://username:password@www.website.com/directory/
Việc thiết lập mật khẩu này có độ an toàn rất cao, vì vậy bạn hoàn toàn có thể yên tâm thư mục của mình sẽ được bảo vệ tuyệt đối.
Tùy biến URL với mod_rewrite
mod_rewrite là gì:
mod_rewrite la một công cụ giúp bạn thay thế một chuỗi ký tự trên thanh URL bằng một chuỗi khác thân thiện hơn.
Ví dụ: hãy thử so sánh 2 dường dẫn sau:
1,http://www.rimoka.net/?do=news&id=23
2,http://www.rimoka.net/news/tuy_bien_voi_mod_rewrite.rmk
Rõ ràng đường link thứ 2 đẹp hơn rất nhiều. Và nhìn vào đường link thứ 2 người cũng có thể sơ sơ đoán được nội dung mà nó dẫn đến là gì.
Nếu host bạn có hỗ trợ .htaccess thì chả tội gì mà không tận dụng tiện ích này.
Ngày trước khi tớ chưa biết đến mod_rewrite tớ cứ thắc mắc tại sao một số web site, người ta lại dùng file có đuôi mở rộng lạ thế (như .rmk chẳng hạn).
Đồng ý là dù có đổi đuôi .html thành bất cứ thứ gì thì IE vẫn giải mã hết, nhưng với Firefox và Opera thì lại khác, nó down về ngay.
1, Cơ bản
Ta hãy tạo một file .htaccess đơn giản có nhiệm vụ đổi truy vấn home.rmk thành index.php.
DirectoryIndex index.php
#Kích hoạt mod_rewrite
RewriteEngine On
#Đổi chuỗi home.rmk thành index.php
RewriteRule ^home.rmk$ index.php [L]
Lưu thành file .htaccess rồi up vào thư mục gốc của trang web của bạn.
Giờ trên trình duyệt hãy gõ vào home.rml bạn sẽ thấy nội dung trang web hiện như là khi bạn gõ vào trình duyệt index.php vậy.
Giờ đòi hỏi cao hơn một chút, bạn muốn khi gõ vào trình duyệt search.rmk trang web sẽ tải lấy nội dung của index.php?do=search thì sao.
Thêm dòng sau vào file .htaccess của bạn:
RewriteRule ^search.rmk$ index.php?do=search [L]
Rất dễ đúng không .
2, Nâng cao :
Sử dụng biến trong mod_rewrite
Giả sử bạn có một trang lấy thông tin của thành viên theo đường dẫn như sau:
index.php?subaction=userinfo&user=___tên thành viên___
Như bạn thấy yếu tố ___tên thành viên___ ở đây là tùy vào truy vấn của người sử dụng muốn lấy thông tin của thành viên nào.
Giờ phải làm sao cho khi người ta gõ vào trình duyệt http://www.rimoka.net/user/=___tên thành viên___ (thêm folder ảo user vào để nhận thấy rằng ta đang muốn thấy thông tin về thành viên) nó sẽ lấy thông tin từ trang index.php?subaction=userinfo&user=___tên thành viên___
Ta sẽ dùng đoạn mã sau:
RewriteRule ^user/([^/]*)(/?)+$ index.php?user=$1 [L]
Chuỗi ([^/]*)(/?)+ sẽ thay thế các biến bạn nhập vào và chuyển giá trị sang $1
Giới hạn cho biến:
Bạn có một trang lấy tin tức theo ngày tháng, như sau:
index.php?year=___năm lấy tin___
(giả sử là 2007 thì sẽ là index.php?year=2007).
Khi truy vấn theo URL đó thì trang web sẽ tự động lấy các tin đăng vào năm 2007.
Nếu bạn sử dụng đoạn mã đơn giản như ở trên như sau:
RewriteRule ^([^/]*)(/?)+$ index.php?year=$1 [L]
Có vẻ không ổn lắm, vì nếu như nhập từ trình duyệt http://www.rimoka.net/2007 thì đúng là nó hiểu là năm thật đấy, như bạn nhập vào chuỗi khác thì sao (một số ký tự chữ chẳng hạn) liệu nó có hiểu đúng nữa không.
Vậy giới hạn của biến ở đây là gì, phải là số tất nhiên rồi, năm mà lị. Còn gì nữa, nó có 4 chữ số. Hãy xem đoạn mã sau:
RewriteRule ^([0-9]{4})(/?)+$ index.php?year=$1 [L]
Chuỗi ([0-9]{4})(/?)+ sẽ được hiểu là biến được sử dụng là số, khoảng hiệu dụng là từ 0-9 và có 4 chữ số.
Như thế nếu bạn nhập vào một biến có 4 chữ số thì nó sẽ tự động lấy thông tin của trang index.php?year=___năm lấy tin___, nhưng nếu biến nhập cũng là số và không phải là 4 ký tự, nó sẽ không hoạt động. Tương tự như vậy với biến nhập vào là chữ. Vì vậy khi gõ vào trình duyệt http://www.rimoka.net/2000007 nó sẽ báo lỗi là thư mục không tồn tại.
Tương tự như vậy lấy bài theo tháng.
RewriteRule ^([0-9]{4})/([0-9]{2})(/?)+$ index.php?&year=$1month=$2 [L]
Trở lại với đường dẫn ở trên tớ đưa:
http://www.rimoka.net/news/tuy_bien_voi_mod_rewrite.rmk
Giờ thì nó thật đơn giản
RewriteRule ^news/(.*).rmk(/?)+$ index.php?&news_name=$1 [L]
(.*) chính là dãy tuy_bien_voi_mod_rewrite và nó sẽ chuyển giá trị sang $1.
Sửa lần cuối RiMoKa Sửa vào20/01/2008 05:17 |
|