IIS7中Web.config的rewrite實(shí)例分析講解,教你看懂重寫(xiě)規(guī)則
本文詳細(xì)介紹解釋了IIS7 Web.config rewrite規(guī)則設(shè)置url重寫(xiě)功能,通過(guò)講解實(shí)例的語(yǔ)法結(jié)構(gòu)和標(biāo)簽用法,搭配一些簡(jiǎn)單的正則表達(dá)式,你可以寫(xiě)出符合自己要求的重寫(xiě)規(guī)則。
首先請(qǐng)注意,本文適用IIS7及以上rewrite重寫(xiě)功能。
同樣要注意的是,要實(shí)現(xiàn)在 Web.config 的rewrite重寫(xiě)功能,你必須先安裝 URL_Rewrite 重寫(xiě)模塊。
下面是本文要介紹的內(nèi)容,如何通過(guò) Web.config 的rewrite規(guī)則,設(shè)置url重寫(xiě)功能。
實(shí)例代碼
<?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>
節(jié)點(diǎn)的name不能重復(fù)。
2、<match>
里的url是一個(gè)正則表達(dá)式,實(shí)例里^(.*)t/([0-9,a-z]*)
是一個(gè)常用的句式。
^
匹配域名開(kāi)頭,如:https://www.jb51.net/
,注意域名后面有個(gè)斜杠/
。
(.*)
匹配任何字符。
([0-9,a-z]*)
匹配任何數(shù)字和字母。
因此,^(.*)t/([0-9,a-z]*)
可以匹配如下的訪問(wèn)網(wǎng)址(假如網(wǎng)站域名是www.jb51.net):
https://www.jb51.net/t/123
3、<action type="Rewrite" ...>
表示執(zhí)行的類(lèi)型是重寫(xiě),里面的url是實(shí)際網(wǎng)址,{R:1}/list.asp?id={R:2}
的解釋如下:
{R:1}
對(duì)應(yīng)<match>
里的url的第一個(gè)括號(hào)內(nèi)容,{R:2}
對(duì)應(yīng)<match>
里的url的第二個(gè)括號(hào)內(nèi)容,如果有{R:3}
、{R:4}
,如此類(lèi)推。
所以,如果假如用戶(hù)訪問(wèn)的網(wǎng)址是
https://www.jb51.net/t/123
https://www.jb51.net/news/t/a1
那么,其對(duì)應(yīng)的實(shí)際網(wǎng)址是
https://www.jb51.net/list.asp?id=123
https://www.jb51.net/news/list.asp?id=a1
4、按照上面的解釋?zhuān)銘?yīng)該差不多能讀懂實(shí)例的rule2重寫(xiě)規(guī)則了。
$
,這是個(gè)結(jié)束符,表示匹配的url到此結(jié)束,后面沒(méi)有其他字符了。
([0-9]+)
表示匹配任何數(shù)字。
\.html
表示匹配 .html
。
\?
表示匹配一個(gè)問(wèn)號(hào)?
。
特別要注意,反斜杠\
是轉(zhuǎn)義符,因?yàn)檎齽t表達(dá)式里,一點(diǎn).
是表示匹配任何字符的意思,所以要加上反斜杠對(duì)其轉(zhuǎn)義,這樣才表示匹配的是一個(gè)點(diǎn).
。
同樣地,問(wèn)號(hào)?
也是一個(gè)元符號(hào),它表示匹配前面的子表達(dá)式零次或一次,因此,也需要在其前面加上轉(zhuǎn)義符\
,這才表示匹配的是一個(gè)問(wèn)號(hào)?
。
5、其他
ignoreCase="false"
表示不能忽略大小寫(xiě),如果該值設(shè)為true
,則表示忽略大小寫(xiě)。
appendQueryString="false"
表示不使用url參數(shù)。
總結(jié)
本文詳細(xì)介紹解釋了IIS7 Web.config rewrite規(guī)則設(shè)置url重寫(xiě)功能,參考實(shí)例的語(yǔ)法結(jié)構(gòu),你可以寫(xiě)出符合自己要求的重寫(xiě)規(guī)則,你需要了解一些簡(jiǎn)單的正則表達(dá)式的語(yǔ)法。
到此這篇關(guān)于IIS7中Web.config的rewrite實(shí)例分析講解,教你看懂重寫(xiě)規(guī)則的文章就介紹到這了,更多相關(guān)IIS7中url重寫(xiě)的rewrite規(guī)則內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!
相關(guān)文章:
1. IIS7 IIS8 http自動(dòng)跳轉(zhuǎn)到HTTPS(80端口跳轉(zhuǎn)443端口)2. IIS7下設(shè)置https主機(jī)名綁定灰色無(wú)法修改問(wèn)題解決3. IIS的web.config中跨域訪問(wèn)設(shè)置方法4. iis7.5中讓html與shtml一樣支持include功能(添加模塊映射)5. IIS中301重定向跳轉(zhuǎn)web.config規(guī)則和http重定向模塊的實(shí)現(xiàn)教程6. Windows 2008 R2 IIS7.5配置FTP圖文教程7. Windows Server 2008 R2 IIS7.5配置FTP圖文教程
