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}&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}&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]*)所有字母和數字和沒有字