IIS URL Rewrite 基本規則

URL rewrite模組從IIS7開始內建於IIS裡, 可以幫你把複雜難記的網址轉換成簡單易懂的網址, 不止是讓使用者易懂, 也是讓搜尋引擎能夠容易了解你的網址架構, 而讓搜尋引擎索引你的網站. 這裡我們介紹幾個常用的Rewrite rules.

Canonical Host Name
<rule name="Canonical Host Name" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="^192.168.1.1$" negate="true" />
        <add input="{HTTP_HOST}" pattern="^example\.com$" />
        <add input="{HTTP_HOST}" pattern="^www\.example\.com$" negate="true" />
    </conditions>
    <action type="Redirect" url="http://www.example.com/{R:1}" />
</rule>
上面的規則會將如example.com重新導向至www.example.com去. 

Match
<match url="(.*)" /> 表示接受所有的網址

Conditions
<conditions>表示所有網址必須符合所有規則的模式.

<add input="{HTTP_HOST}" pattern="^192.168.1.1$" negate="true" />
代表著網域名稱的模式必須為"192.168.1.1", 而最後的negate="true"則代表否定的意思, 所以這規則的白話解釋就是
網域名稱不等於192.168.1.1的意思.

<add input="{HTTP_HOST}" pattern="^example\.com$" />
因為此規則裡並沒有negate="true", 所以此規則的意思就是網域名稱等於example.com .

Action
action會在當網址符合所有的規則模式後被執行, 在這裡我們使用的action type為Redirect, 這樣會送回給用戶端一個
重新導向的回應, 當網址及conditions裡的規則符合時, 瀏覽器會重新導向到www.exaple.com去.



替換目錄
<rule name="DifferentFolder" stopProcessing="true">
    <match url="^Examples/(.*).html$" />
    <action type="Rewrite" url="output/Examples/{R:1}.html" />
</rule>
上面的規則會把
http://www.example.com/Examples/index.html
或是
http://www.example.com/Examples/example-123.html
的網址替換成 output/Examples/index.html 或是 output/Examples/example-123.html

 
<rule name="Rewrite With id" stopProcessing="true">
    <match url="^(Article)-(\d+).html$" />
    <action type="Rewrite" url="/Article/index.aspx?aid={R:2}" />
</rule>
此規則會把
http://www.example.com/Article-123.html
網址替換成
Article/index.aspx?aid=123






 
comments powered by Disqus