IIS7中Web.config的rewrite實例分析講解,教你看懂重寫規則
本文詳細介紹解釋瞭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規則內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- IIS中301重定向跳轉web.config規則和http重定向模塊的實現教程
- windows server 2019開啟iis服務器+tp5.1的完美配置運行流程
- windows server 2012 r2 服務器部署tp6 項目
- C# 添加對System.Configuration.dll文件的引用操作
- Apache中偽靜態Rewrite的使用方法和URL重寫規則表達式講解