Ưu tiên giống với thứ tự mà chúng được chỉ định trong. Trình quản lý IIS có nút "Di chuyển lên" và "Di chuyển xuống" để sắp xếp lại chúng cho bạn.
Ví dụ:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Rule1" stopProcessing="true">
<match url="^foo/?bar=123"/>
<action type="Rewrite" url="foo.aspx?bar=special" appendQueryString="false" />
</rule>
<rule name="Rule2" stopProcessing="true">
<match url="^foo/?bar=([A-z0-9]+)"/>
<action type="Rewrite" url="foo.aspx?bar={R:1}" appendQueryString="false" />
</rule>
<rule name="Rule3" stopProcessing="true">
<match url="^foo/"/>
<action type="Rewrite" url="somethingElse.aspx" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Hãy xem xét một yêu cầu đến cho /foo?bar=123
.
Trong ví dụ này, vì Rule1
là lần đầu tiên, nó có nghĩa là yêu cầu sẽ được viết lại để foo.aspx?bar=special
thay vì foo.aspx?bar=123
, mặc dù nó đồng thời phù hợp với Rule1
, Rule2
, và Rule3
.
Thuộc tính stopProcessing="true"
đảm bảo rằng các quy tắc đối sánh khác không được thực hiện (ví dụ: Rule2
và Rule3
).
Nguồn: http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#Rules_Evaluation
Mỗi cấp độ cấu hình trong IIS có thể có không hoặc nhiều hơn viết lại quy tắc xác định. Các quy tắc được đánh giá theo thứ tự mà chúng được chỉ định. Mô-đun Rewrite URL xử lý tập hợp các quy tắc bằng cách sử dụng thuật toán sau:
- Đầu tiên, URL được so khớp với mẫu của quy tắc. Nếu không khớp, Mô-đun Rewrite URL ngay lập tức ngừng xử lý quy tắc đó và chuyển sang quy tắc tiếp theo.
- Nếu mẫu phù hợp và không có điều kiện cho quy tắc, Mô-đun Rewrite URL thực hiện hành động được chỉ định cho quy tắc này và sau đó chuyển sang quy tắc tiếp theo, nơi nó sử dụng URL được thay thế làm đầu vào cho quy tắc đó.
- Nếu mẫu phù hợp và có các điều kiện cho quy tắc, Mô-đun Rewrite URL sẽ đánh giá các điều kiện. Nếu đánh giá thành công, hành động quy tắc được chỉ định được thực hiện và sau đó URL viết lại được sử dụng làm đầu vào cho quy tắc tiếp theo
bạn có thể giải thích điều này trong ngữ cảnh của tệp web.config không? tôi không biết gì về gui cả. – tau
@tau Tôi đã cập nhật câu trả lời của mình. – Dai
cảm ơn bạn rất nhiều! tôi sẽ thử cái này càng sớm càng tốt. – tau