Căn bản về SSI trên Apache.

3 559 3
Căn bản về SSI trên Apache.

Đang tải... (xem toàn văn)

Thông tin tài liệu

Căn bản về SSI trên Apache.

Căn bản về SSI trên Apache : trang này đã được đọc lần Using Server Side Includes Trong khi các file HTML chuẩn dùng cho lưu giữ các trang rất tốt, thì khả năng tạo ra một số nội dung động của nó cũng rất đáng hoan nghênh. Lấy ví dụ, đưa thêm vào một footer hay một header vào tất cả các file, hoặc là đưa vào thông tin về tài liệu ví như thời gian sửa đổi gần nhất một cách tự động. Điều này có thể thực hiện bằng CGI được, nhưng nó lại đòi hỏi những kĩ năng lập trình hoặc viết mã kịch bản mà vấn đề đó thì không hề đơn giản. Đối với những trang tài liệu động đơn giản thì chúng ta có một giải pháp thay thế khác: đó là các nội dung đưa vào từ máy chủ (SSI). Bài này là một trong loạt bài về SSI do chúng tôi biên soạn, với các mức độ khác nhau về cú pháp. Nếu các bạn muốn theo dõi về chủ đề này xin đến với Diễn dàn Công nghệ thông tin VN http://cnttvn.cjb.net/SSI cho phép bạn gắn kèm một số câu lệnh đặc biệt vào trong chính trang HTML. Khi mà server đọc một tài liệu có chứa SSI, nó sẽ tìm kiếm các câu lệnh này và thực hiện các hành động cần thiết. Ví dụ, có một câu lệnh SSI thực hiện chức năng nhập vào thời gian sửa đổi gần nhất của tài liệu. Khi server đọc được một file có dòng lệnh này trong đó, nó sẽ thay thế dòng lệnh bằng thời gian thích hợp. Apache có chứa một tập hợp các câu lệnh SSI dựa theo một số câu lệnh có trong máy chủ NCSA cộng với nhiều câu lệnh mở rộng khác. Điều này được thực hiện với the includes module (mod_includes). (Bạn có thể hiểu là một chương trình có chức năng tổng hợp)Telling Apache to Use SSITheo mặc định thì máy chủ không hơi đâu mà đi tìm trong các file HTML xem có các câu lệnh SSI hay không. Điều này làm giảm tốc độ mọi lần truy cập đến một file HTML. Để sử dụng SSI bạn cần báo cho Apache biết là các tài liệu nào thì có chứa các câu lệnh SSI. Một cách để làm được điều này là dùng một file có phần mở rộng đặc biệt. Thường thì người ta dùng .shtml, và nó có thể được lên cấu hình (configured) cùng với cái directive tức cái lời hướng dẫn này: AddHandler server-parsed .shtmlAddType text/html shtmlChỉ thị AddHandler bảo cho Apache biết cách xử lý mọi file .shtml như là một loại mà có chứa các câu lệnh SSI. Chỉ thị AddType thì thực hiện cái điều là làm cho các nội dung được xử lý ấy được đánh dấu như là HTML để trình duyệt hiển thị nó một cách chính xác. Một phương pháp thay thế khác để thông báo cho server biết file nào là có chứa các câu lênh SSI là sử dụng cái gọi là XBitHack. Cái này liên quan đến việc thiết lập the execute bit mà tôi tạm dịch là bit thực thi trên các file HTML. Bất cứ một file này có loại nội dung (content type) là text/html (ví dụ có phần mở rộng là .html) và có chứa một tập hợp bit thực thi thì sẽ được kiểm tra xem có chứa các câu lệnh SSI hay không. Để làm điều này thì cần phải đưa vào chỉ thị XBitHack . Trong cả hai phương pháp thì server cũng cần phải được lên cấu hình để cho phép dùng các câu lệnh SSI. Điieù này đượct hực hiện với chỉ thị Options Includes , cái này cần được đặt trong hoặc là tệp tin toàn cục mang tên access.conf (the global access.conf) hoặc là tệp tin địa phương .htaccess (local .htaccess) (mặc dầu là cái thứ hai bắt buộc phải được enabled bằng chỉ thị AllowOverride Options). Bởi vì một số câu lệnh SSI cho phép dùng các chương trình thực thi mà có thể mang tới rủi ro về vấn đề security, nên có một giải pháp thay thế tùy chọn, IncludesNOExec cho phép các câu lệnh SSI đều thực hiện được ngoại trừ những câu lệnh nào thực thi một chương trình. SSI CommandsTất cả các câu lệnh SSI được lưu giữ trong file HTML bằng các kí hiệu ghi chú của HTML. Một câu lệnh SSI bình thường trông giống như thế này: Trong trường hợp này câu lệnh là flastmod, nó có nghĩa là đưa ra thông tin là thời gian sửa đổi gần nhất của file đó. Các đối số (argument) xác định cụ thể file đó là "this.html" (đây là tên của file có chứa câu lệnh này). Toàn bộ phần viết ra câu lệnh, mà được chứa trong kí hiệu đánh dấu phần chú thích ãe được thay thế bằng kết quả của câu lệnh này.Nói chung thì tất cả các câu lệnh đều có cái format tức cái công thức như sau: trong đó arg1, arg2, vân vân là các cái tên của các đối số và value1, value2 vân vân là các giá trị của các đối số đó. Trong ví dụ về flastmod, đối số là 'file' và giá trị của nó là 'this.html'. Thường thì các câu lệnh có thể nhận các tên của đối số khác nhau. Ví dụ, flastmod có thể được trao cho một URL với đối số là virtual, để lấy được thời gian của lần sửa đổi gần nhất từ server. Ví dụ: để nhận được thời gian sửa đổi gần nhất của trang chủ trên server đó (điều này là hữu ích nếu như trang được truy cập đó có thể có một tên khác, ví dụ là như thế). Bên cạnh flastmod, có các câu lệnh SSI làm chức năng là lấy kích thước (size) của một file hay một URL, các nội dung của một biến (được máy chủ truyền vào trong), các nội dung của một file khác hay URL khác, hoặc kết quả của việc chạy một local file tức là một tệp tin trong nội bộ site. Những câu lệnh này được nêu ra trong NCSA tutorial về vấn đề server side includes. Khi các câu lệnh SSI được thực thi, một số các biến môi trường ('environment variables') được thiết lập. Điều này hàm chứa các biến CGI (REMOTE_HOST etc), và thêm một số cái nữa, như là DOCUMENT_NAME và LAST_MODIFIED. Các biến này có thể là thông tin đầu ra (output) với câu lệnh echo (do vậy cách tốt hơn để lấy ra thời gian sửa đổi gần nhất của file hiện thời sẽ là ). Extended SSIApache mở rộng ngôn ngữ SSI chuẩn (NCSA-compatible) một cách đáng kể. Một số mở rộng gồm có: Các biến trong các câu lệnh: Apache cho phép các biến được dùng trong bất cứ một câu lệnh SSI nào. Ví dụ, thời gian sửa đổi gần nhất của tài liệu hiện thời có thể lấy ra với Thiết lập các biến: câu lệnh set có thể được dùng bên trong SSI để thiết lập các biến. Các điều kiện: các câu lệnh SSI if, else, elif và endif có thể được dung để đưa các phần của file vào dựa trên các kiểm tra mang tính điều kiện. Ví dụ, biến $HTTP_USER_AGENT có thể được kiểm tra để xem loại của trình duyệt và thông tin đầu ra bằng các mã HTML khác nhau tùy thuộc vào các khả năng của trình duyệt ấy. Các ví dụĐây là một số ví dụ dùng SSI: Displaying document information Mã sau đây đặt thời gian sửa đổi gần nhất lên trang đó: Last modified: Adding a footer to many documents Hãy đặt đoạn mã sau đây xuống tận cùng của mỗi trang tài liệu: Hide links from external users Dùng câu lệnh if và biến REMOTE_ADDR CGI để xem xét xem liệu người sử dụng đó có ở trong vùng nội bộ hay không (the local domain): Internal Documents(Trong đó 1.2.3 là phần đầu (prefix) của địa chỉ IP của the local domain). . Căn bản về SSI trên Apache : trang này đã được đọc lần Using Server Side Includes Trong. từ máy chủ (SSI) . Bài này là một trong loạt bài về SSI do chúng tôi biên soạn, với các mức độ khác nhau về cú pháp. Nếu các bạn muốn theo dõi về chủ đề này

Ngày đăng: 02/11/2012, 14:17

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan