Cấp bậc tác giả:

TRAINING

URL REWRITE MODULE trong IIS 7.0

Được viết bởi QuangIT ngày 13/08/2012 lúc 07:04 PM
Microsoft URL Rewrite là một module chạy trên IIS 7.0, module này giúp viết lại liên kết URL một cách linh hoạt nhưng vẫn đảm bảo nội dung trong liên kết đó không bị thay đổi so với nội dung liên kết ban đầu nhưng sẽ không bị giới hạn
  • 0
  • 11591

URL REWRITE MODULE trong IIS 7.0

Microsoft URL Rewrite là một module chạy trên IIS 7.0, module này giúp viết lại liên kết URL một cách linh hoạt nhưng vẫn đảm bảo nội dung trong liên kết đó không bị thay đổi so với nội dung liên kết ban đầu nhưng sẽ không bị giới hạn ở các điểm sau:
  • Tối ưu hóa URL và bộ máy tìm kiếm.
  • Rewrite URL cơ bản dựa vào HTTP header và server variables
  • Nội dung website
  • Điều khiển, xử lí nội dung website dựa trên URL segment hoặc request data

Các điểm đặc trưng của Microsoft URL Rewrite

  • Rules-based URL rewrting engine
  • Regular expression pattern matching
  • Wildcard pattern matching
  • Global and distributed rewrite rules.
  • Access to server variables and http headers
  • Various rule actions
  • Support for IIS kernel mode and user mode output caching
  • String manipulation functions.
  • Rewrite maps.
  • Failed Request Tracing support.
  • Rule templates
  • UI for testing of regular expression and wilcard patterns
  • UI for managing rewrite rules and rewrite maps.
  • GUI tool for importing of mod_rewrite rules
Download module 
Yêu cầu:
  • IIS 7.0 với ASP.NET được enable
  • URL rewrite module đã được cài đặt.
Việc cài đặt URL Rewrite khá đơn giản nên chúng ta bỏ qua.

Trước tiên,chúng ta demo thử module.Sử dụng một trang web đơn giản.

Copy ASP.NET code đây và save lại trong %SystemDrive%\inetpub\wwwroot\folder
và đặt tên là article.aspx

Code:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>URL Rewrite Module Test</title>
</head>
<body>
<h1>URL Rewrite Module Test Page</h1>
<table>
<tr>
<th>Server Variable</th>
<th>Value</th>
</tr>
<tr>
<td>Original URL: </td>
<td><%= Request.ServerVariables["HTTP_X_ORIGINAL_URL"] %></td>
</tr>
<tr>
<td>Final URL: </td>
<td><%= Request.ServerVariables["SCRIPT_NAME"] + "?" + Request.ServerVariables["QUERY_STRING"] %></td>
</tr>
</table>
</body>
</html> 
Sau đó,mở trình duyệt và gõ vào địa chỉ http://localhost/article.aspx và kiểm tra 

TẠO MỘT REWRITE RULE

Chúng ta sẽ tạo ra một rewrite rule đơn giản và có dạng như sau:
http://localhost/article/342/some-article-title
và nội dung trong liên kết trên sẽ giống như trong liên kết sau:
http://localhost/article.aspx?id342&...-article-title

Mở IIS Manager.
Chọn Default Web Site
Trên mục Feature View click URL Rewrite 



Tại khung Actions ở bên phải,click Add rules.Lúc đó sẽ xuất hiện bảng Add rule(s).Click vào Blank rule sau đó click OK.



Rewrite được định nghĩa yêu cầu phải có 4 thông tin sau:
  • Tên của rule
  • Kiểu sử dụng của chuỗi URL
  • Các tùy chọn về điều kiện.
  • Tất cả các điều kiện đều đã được kiểm tra thành công.

Tại mục Name,gõ tên của rule vào,chẳng hạn Rewrite to article.aspx
Tại mục Pattern,bạn nhập chuỗi sau.

Code:
^article/([0-9]+)/([_0-9a-z-]+) 
Chuỗi trên thỏa các điều kiện sau:
  • Bắt đầu với kí tự ”article “
  • Bao gồm 1 hoặc nhiều kí tự sau dấu ”/ “ đầu tiên
  • Bao gồm 1 hoặc nhiều kí tự ”_ “ hoặc ” – “ sau dấu ”/ “ thứ hai.

Sau khi rule đã được tạo để thực hiện chức năng viết lại URL,tại mục Action,bạn chọn Action type là Rewrite.Tại mục Rewrite URL ,nhập chuỗi sau vào

Code:
article.aspx?id={R:1}&title={R:2} 
Chú ý : giá trị của chuỗi truy vấn mà chúng ta sử dụng là {R:1} và {R:2}



Sau đó thiết lập xong,click Apply để xác nhận.

Rewrite rule hiện đang nằm trong file Host.config hoặc web.config.Để kiểm tra cấu hình rule mà chúng ta vừa tạo,mở file web.config ở %SystemDrive%\inetpub\wwwroot.Ở file này bạn sẽ thấy tab <rewrite> trong nội dung:

Code:
<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>
TẠO MỘT RULE NGĂN CHẶN SỰ TRUY CẬP

Rule thứ 3 mà chúng ta sẽ tạo là dùng để ngăn chặn những request trái phép.Với rule này sẽ giúp bạn hạn chế được việc tấn công sử dụng HTTP Request .Với rule này có thể giúp bạn hạn chế việc các hacker khai thác lỗi SQL Injection
Chúng ta sẽ tạo rule ,sử dụng IIS Manager.Mở file Web.config và xác định tag <rewrite>.Thêm đoạn sau đây vào <rewrite>

Code:
<rule name="Fail bad requests">
<match url=".*"/>
<conditions>
<add input="{HTTP_HOST}" pattern="localhost" negate="true" />
</conditions>
<action type="AbortRequest" />
</rule> 
Dưới đây là đoạn code tổng hợp từ rewrite rule và redirect rule.

Code:
<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> 
Nào,bây giờ phân tích rule .
Code:
<match url=".*"/> 
Phần tử trên cho ta biết rule sẽ khớp với các chuỗi URL
Code:
<add input="{HTTP_HOST}" pattern="localhost" negate="true" /> 
Phần tử thêm vào các điều kiện để truy vấn host header bằng cách đọc biến HTTP_POST.
Code:
<action type="AbortRequest" /> 
Phần tử này sẽ thông báo cho URL rewrite module về việc kết thúc HTTP request.
Kiểm tra rule,mở trình duyệt gõ http://127.0.0.1/article/234/some-title.Với URL này,server sẽ không trả kết quả thực về,lúc này bạn sẽ nhận được thông báo không thể kết nối đến server được.Nhưng với urlhttp://localhost/article/234/some-title thì bạn sẽ nhận được thông báo trả về từ server



OVERVIEW URL REWRITE FOR HOSTERS


</rewrite> 

Bây giờ,chúng ta bắt đầu kiểm tra rule,mở trình duyệt web và gõ URL sau:
http://localhost/article/234/some-title


Tương tự bạn có thể thiết lập redirect rule.Chẳng hạn với URL sau:
http://localhost/blog/some-other-title/543
sẽ redirect qua URL sau:
http://localhost/article/543/some-other-title
Vẫn với cách thiết lập rewrite rule bạn thiết lập với redirect rule như hình dưới





Mở trình duyệt để kiểm tra kết quả.Nhập URL :
http://localhost/blog/some-other-title/323
Bạn sẽ thấy trình duyệt redirect về url http://localhost/article/323/some-other-title.

 

Nguồn bài viết: Dngaz.com

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML