首頁 > 軟體

IIS7中Web.config的rewrite範例分析講解,教你看懂重寫規則

2022-11-21 14:02:48

本文詳細介紹解釋了IIS7 Web.config rewrite規則設定url重寫功能,通過講解範例的語法結構和標籤用法,搭配一些簡單的正規表示式,你可以寫出符合自己要求的重寫規則。

首先請注意,本文適用IIS7及以上rewrite重寫功能

同樣要注意的是,要實現在 Web.config 的rewrite重寫功能,你必須先安裝 URL_Rewrite 重寫模組。

下面是本文要介紹的內容,如何通過 Web.config 的rewrite規則,設定url重寫功能。

範例程式碼

<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <system.webServer>
      <rewrite>
        <rules>
          <rule name="rule1">
             <match url="^(.*)t/([0-9,a-z]*)" ignoreCase="false" />
             <action type="Rewrite" url="{R:1}/list.asp?id={R:2}" appendQueryString="false" />
          </rule>
          <rule name="rule2">
             <match url="^(.*/)*([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+).html?*(.*)$" />
             <action type="Rewrite" url="{R:1}/index.php?moduleid={R:2}&catid={R:3}&itemid={R:4}&page={R:5}" />
          </rule>
        </rules>
      </rewrite>
  </system.webServer>
</configuration>

解釋

1、<rule>節點的name不能重複。

2、<match>裡的url是一個正規表示式,範例裡^(.*)t/([0-9,a-z]*)是一個常用的句式。

^匹配域名開頭,如:https://www.jb51.net/,注意域名後面有個斜槓/

(.*)匹配任何字元。

([0-9,a-z]*)匹配任何數位和字母。

 因此,^(.*)t/([0-9,a-z]*) 可以匹配如下的存取網址(假如網站域名是www.jb51.net):

https://www.jb51.net/t/123

3、<action type="Rewrite" ...>表示執行的型別是重寫,裡面的url是實際網址,{R:1}/list.asp?id={R:2} 的解釋如下:

{R:1}對應<match>裡的url的第一個括號內容,{R:2}對應<match>裡的url的第二個括號內容,如果有{R:3}{R:4},如此類推。

所以,如果假如使用者存取的網址是

https://www.jb51.net/t/123
https://www.jb51.net/news/t/a1

那麼,其對應的實際網址是

https://www.jb51.net/list.asp?id=123
https://www.jb51.net/news/list.asp?id=a1

4、按照上面的解釋,你應該差不多能讀懂範例的rule2重寫規則了。

$,這是個結束符,表示匹配的url到此結束,後面沒有其他字元了。

([0-9]+) 表示匹配任何數位。

.html 表示匹配 .html

?表示匹配一個問號?

特別要注意,反斜槓是跳脫符,因為正規表示式裡,一點.是表示匹配任何字元的意思,所以要加上反斜槓對其跳脫,這樣才表示匹配的是一個點.

同樣地,問號?也是一個元符號,它表示匹配前面的子表示式零次或一次,因此,也需要在其前面加上跳脫符,這才表示匹配的是一個問號?

5、其他

ignoreCase="false" 表示不能忽略大小寫,如果該值設為true,則表示忽略大小寫。

appendQueryString="false" 表示不使用url引數。

總結

本文詳細介紹解釋了IIS7 Web.config rewrite規則設定url重寫功能,參考範例的語法結構,你可以寫出符合自己要求的重寫規則,你需要了解一些簡單的正規表示式的語法。

到此這篇關於IIS7中Web.config的rewrite範例分析講解,教你看懂重寫規則的文章就介紹到這了,更多相關IIS7中url重寫的rewrite規則內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com