1. 程式人生 > >IIS7下偽靜態(URL重寫)的實現方法

IIS7下偽靜態(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]*)所有字母和數字和沒有字