Chia Sẽ Kinh Nghiệm Về IT



Tìm Kiếm Với Google
-


Gởi Ðề Tài Mới  Gửi trả lời
 
Công Cụ Xếp Bài
Tuổi 14-08-2009, 10:16 AM   #1
hoctinhoc
Guest
 
Trả Lời: n/a
Cấu hình Microsoft URL Rewrite trong IIS 7.0
Cấu hình Microsoft URL Rewrite trong IIS 7.0




Microsoft URL Rewrite in IIS 7.0
Giới thiệu:
Microsoft URL Rewrite cho IIS 7.0 cung cấp những quy tắc linh hoạt nhằm viết lại những liên kết của website theo một dang khác mà vẫn đảm bảo đúng nội dung liên kết đó
* Việc viết lại URL được dựa vào HTTP headers và server variables
* Nội dung trang web.
* Sự truy nhập tới nội dung trang web cần kiểm soát
Download Module
Download the x86 CTP version for IIS 7.0: http://www.iis.net/downloads/default...=34&g=6&i=1691
Download the x64 CTP version for IIS 7.0: http://www.iis.net/downloads/default...=34&g=6&i=1692
Để sử dụng được URL Rewrite bạn cần chuẩn bị đủ các yêu cầu sau:
1. IIS 7.0 & ASP.NET phải được enabled;
2. URL rewrite module phải được cài đặt.

Khởi tạo và chạy thử URL Rewrite
Để sử dụng URL Rewrite tôi sẽ sử dụng một ví dụ với một trang web ASP.Net. Trang web này sẽ chạy trên server variables và trích xuất kết quả của chúng ra trình duyệt.
Copy toàn bộ nội dung trang ASP.NET vào thư mục %SystemDrive%\inetpub\wwwroot\ và file ví dụ trong bài này là article.aspx:
PROGRAMS CODE

  1. <%@ Page Language="C#" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>URL Rewrite Module Test</title>
  7. </head>
  8. <body>
  9. <h1>URL Rewrite Module Test Page</h1>
  10. <table>
  11. <tr>
  12. <th>Server Variable</th>
  13. <th>Value</th>
  14. </tr>
  15. <tr>
  16. <td>Original URL: </td>
  17. <td><%= Request.ServerVariables["HTTP_X_ORIGINAL_URL"] %></td>
  18. </tr>
  19. <tr>
  20. <td>Final URL: </td>
  21. <td><%= Request.ServerVariables["PATH_INFO"] + "?" + Request.ServerVariables["QUERY_STRING"] %></td>
  22. </tr>
  23. </table>
  24. </body>
  25. </html>





Sau khi copy xong bạn vào http://localhost/article.aspx để test thử
Tiến hành URL Rewrite
Trong bài này tôi sẽ hướng dẫn bạn Rewrite một link đại khái như các trang Vnexpress.net , Vietnamnet.vn … có dạng như bên dưới:
http://localhost/article/342/some-article-title
sẽ được hiểu như link:
http://localhost/article.aspx?id=342...-article-title.
Chúng ta sẽ sử dụng URL Rewrite UI trong IIS Manager. Bạn làm theo các bước:
  1. Vào IIS Manager
  2. Chọn “Default Web Site”
  3. Trong Feature View chọn “URL Rewrite Module"
Hình ảnh này đã bị thu nhỏ. Nhấp vào hình để xem kính thước thật (729x569).
  1. Trong mục “Actions” bên phải chọn “Add rule…
Hình ảnh này đã bị thu nhỏ. Nhấp vào hình để xem kính thước thật (828x590).

Bây giờ bạn phải định nghĩa cho webserver hiểu qui tắc URL Rewrite của bạn bằng cách chỉ rõ những yêu cầu cơ bản sau:
Tên qui tắc:
Trong hộp thoại Name bạn nhập tên cho qui tắc rewrite của mình
VD: Rewrite article.aspx
Hàm Rewrite:
Trong ô “Pattern” bạn nhập vào chuỗi sau:
QUOTE
^article/([0-9]+)/([_0-9a-z-]+)


Chuỗi này là một biểu thức bình thường mà chỉ rõ rằng mẫu sẽ phù hợp với bất kỳ chuỗi URL nào mà gặp những điều kiện sau đây.
1. Bắt đầu với chuỗi có đặc tính là “article/".
2. Chứa đựng một hoặc nhiều ký tự số sau dấu "/" đầu tiên.
3. Chứa đựng một hoặc nhiều chữ số hay dấu " _ " hay dấu "-" sau dấu "/"
Định nghĩa sự hoạt động:
Một khi qui tắc mà bạn tạo ra để viết lại URL của một file ASP.net nào đó phải tương ứng với những gì mà bạn định nghĩa cho file ASP.Net đó trong mục Action, Chọn mục “Rewrite” trong mục “Action”. Trong ô “Rewrite URL:” nhập chuỗi sau:
QUOTE
article.aspx?id={R:1}&title={R:2}


Hình ảnh này đã bị thu nhỏ. Nhấp vào hình để xem kính thước thật (643x603).
Sau đó nhấp “Apply” và lưu công việc của bạn lại
Xem lại các cấu hình lại trong file congif:
Việc cấu hình URL Rewrite của bạn sẽ được lưu lại trong 2 tập tin aplicationHost.config & web.config
Để xem các cấu hình này bạn vào thư mục chứa Webserver của bạn trong ví dụ này là %SystemDrive%\inetput\wwwroot\
Nội dung như đoạn code dưới:
QUOTE
<rewrite>
<rules>
<rule name="Rewrite to article.aspx">
<match url="^article/([0-9]+)/([_0-9a-z-]+)" />
<action type="Rewrite" url="article.aspx?id={R:1}&amp;title={R:2}" />
</rule>
</rules>
</rewrite>



Kiểm tra kết quả:
Bây giờ bạn restart lại webserver và vào lại localhost để test xem nhé:
Hình ảnh này đã bị thu nhỏ. Nhấp vào hình để xem kính thước thật (624x412).
Sử dụng URL Rewrite Redirect:

Với cách này bạn có thể dễ dàng chuyển trang bằng URL Rewrite như ví dụ bên dưới
http://localhost/blog/some-other-title/543
sẽ được chuyển đến:
http://localhost/article/543/some-other-title
Cách cấu hình cũng tương tự như trên nhưng có một số thay đổi khác chút:
  • Ô Name bạn nhập: "Redirect from blog"
  • Ô Pattern nhập: "^blog/([_0-9a-z-]+)/([0-9]+)"
  • Mục Action chọn là: "Redirect"
  • Ô Redirect URL nhập là: "article/{R:2}/{R:1}"
Lưu ý là trong phần này ta đã chuyển đổi R:1 & R:2 hoán đổi vị trí cho nhau rồi.
Hình ảnh này đã bị thu nhỏ. Nhấp vào hình để xem kính thước thật (605x600).
Bây giờ bạn vào Web Browser nhập
http://localhost/blog/some-other-title/323
Bạn thấy nó sẽ chuyển đến trang
http://localhost/article/323/some-other-title

Hình ảnh này đã bị thu nhỏ. Nhấp vào hình để xem kính thước thật (657x412).
Ngăn chặn sự truy cập trực tiếp:
Quy tắc thứ ba mà chúng tôi giới thiệu đến bạn được dùng để ngăn chặn mọi yêu cầu tới trang web nếu những yêu cầu đó không có định nghĩa trong URL Rewrite. Kiểu quy tắc này hữu ích khi bạn muốn ngăn ngừa những sự nỗ lực của hacker muốn tìm cách truy cập trực tiếp file nhằm khai thác lỗi SQL Injection.
Mở file web.config chèn thêm các đoạn code sau vào:
QUOTE
<rule name="Fail bad requests">
<match url="."/>
<conditions>
<add input="{HTTP_HOST}" pattern="localhost" negate="true" />
</conditions>
<action type="AbortRequest" />
</rule>


Bạn cần phải viết lại như sau:
QUOTE
<rewrite>
<rules>
<rule name="Fail bad requests">
<match url="."/>
<conditions>
<add input="{HTTP_HOST}" pattern="localhost" negate="true" />
</conditions>
<action type="AbortRequest" />
</rule>
<rule name="Redirect from blog">
<match url="^blog/([_0-9a-z-]+)/([0-9]+)" />
<action type="Redirect" url="article/{R:2}/{R:1}" redirectType="Found" />
</rule>
<rule name="Rewrite to article.aspx">
<match url="^article/([0-9]+)/([_0-9a-z-]+)" />
<action type="Rewrite" url="article.aspx?id={R:1}&amp;title={R:2}" />
</rule>
</rules>
</rewrite>


Kết luận Trong bài viết này hy vọng bạn đã hiểu để định hình được URL Rewrite có những quy tắc nào và áp dụng chúng ra sao, bằng cách sử dụng IIS Manager của windows hay bằng việc bằng tay soạn thảo như thế nào trong file web.config.
Chúc bạn thành công!


Bài viết của khoai_nuong (www.kythuatvien.com)



  Trả lời ngay kèm theo trích dẫn này
Gửi trả lời



Quyền Hạn Của Bạn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Hình Cảm xúc đang Mở
[IMG] đang Mở
Mã HTML đang Tắt




Bây giờ là 03:36 PM. Giờ GMT +7



Diễn đàn tin học QuantriNet
quantrinet.com | quantrimang.co.cc
Founded by Trương Văn Phương | Developed by QuantriNet's members.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.