IIS7下僞靜態(URL重寫)的實現方法

1、官網下載http://www.iis.net/downloads/microsoft/url-rewrite這個文件:URL Rewrite Module 2.0,安裝到系統後,你能看到IIS管理器裏多了個“URL重寫”的圖標。

2、在web.config裏的<configuration />添加規則,例如:
    <system.webServer>
      <rewrite>
        <rules>
          <rule name="r00">
            <match url="^home.html$" />
            <action type="Rewrite" url="index.aspx" />
          </rule>
          <rule name="r01">
            <match url="^([\w]+).html$" />
            <action type="Rewrite" url="page/bot.aspx?bot_type={R:1}" />
          </rule>
          <rule name="r02">
            <match url="^([\w]+)-([\w]+).html$" />
            <action type="Rewrite" url="page/bot.aspx?bot_type={R:1}&amp;bot_name={R:2}" />
          </rule>
          <rule name="r03">
            <match url="^features/([\w]+)-([\w]+).html$" />
            <action type="Rewrite" url="page/features.aspx?bot_type={R:1}&amp;bot_name={R:2}" />
          </rule>
          <rule name="r00de">
            <match url="^([\w]+)/home.html$" />
            <action type="Rewrite" url="{R:1}/page/index.aspx" />
          </rule>
        </rules>
      </rewrite>
    </system.webServer>

3、把網站裏所有的鏈接改爲match url裏的鏈接。

4、ASP.NET頁的URL帶的參數都可以正常使用,但是,JS或JQ裏就獲取不到URL的參數了。解決方法是把URL裏的字符直接截取:
例如原來在JQ中是用var u1 = $.query.get("bot_name");來獲取參數的,僞靜態後就要用
var url = location.href;  //獲取完整的URL
var u1 = url.substring(url.lastIndexOf("-") + 1, url.lastIndexOf("."));  //截取URL中最後一個“-”之後到最後一個“.”之間的字符
......
或者用於
var url = location.href;
if (url.indexOf("Famibot") > 0) {  //如果URL中包含字符“Famibot”
     ......
        };
if (url.indexOf("Winbot") = -1) { //如果URL中沒有字符“Winbot”
     ......
        };
注意:如果域名裏有中文,請用var url = decodeURI(location.href);來獲取,否則是亂碼!!!

5、另外介紹下URL裏常用正則表達式:
(.*)所有字符和符號,包括中文字和沒有字
([/d]+)所有數字
([/w]+)所有字母和數字
([/w]*)所有字母和數字和沒有字

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章