namespace URL
{
public class myrewritter : URLRewriter.BaseModuleRewriter
{
protected override void Rewrite(string requestedPath, HttpApplication app)
{
if (requestedPath.Contains("viewnews/2009/3/2.html"))
app.Context.RewritePath("/viewnews.aspx?id=2&year=2009&month=3");
else
app.Context.RewritePath("/here.aspx");
}
}
}
可以看到該類繼承了URLRewriter.BaseModuleRewriter,然后在Rewrite方法中加入了我們自己的邏輯.現(xiàn)在,只要當(dāng)前的url請(qǐng)求是viewnews/2009/3/2.html,我們就會(huì)將頁(yè)面重寫到/viewnews.aspx?id=2&year=2009&month=3.
這只是一個(gè)簡(jiǎn)單的例子,實(shí)際上對(duì)于url的判斷,一般是用正則表達(dá)式來完成.而頁(yè)面和頁(yè)面間的對(duì)應(yīng)關(guān)系,可能需要通過查詢數(shù)據(jù)庫(kù)完成.接下來在網(wǎng)站項(xiàng)目中引用這個(gè)類庫(kù).然后修改下web.config,下面是我的web.config
代碼如下:
<?xml version="1.0"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<httpModules>
<add type="URL.myrewritter" name="URL" />
</httpModules>
<compilation debug="true" />
<authentication mode="Windows" />
</system.web>
</configuration>
大家可以看到我新加了個(gè)httpModules.這個(gè)的作用是,如果有url請(qǐng)求,asp.net會(huì)先把請(qǐng)求傳到你指定的這個(gè)類中來.add那一行了,前面的是要接收請(qǐng)求的類,后面的是這個(gè)類所在的dll的名字.
添加完這一句后,一切就快結(jié)束了.由于我們要處理的是.html的頁(yè)面,所以需要配置下iis.因?yàn)槟J(rèn)asp.net的處理引擎不會(huì)管.html.我們要做的是用處理asp.ent的那個(gè)程序來處理html頁(yè)面.打開iis.找到你的網(wǎng)站,點(diǎn)右鍵打開屬性.找到主目錄(Home Directory),打開配置(Configuration)對(duì)話框. 在Application extensions(抱歉我不知道這個(gè)在中文系統(tǒng)里叫什么)列表里找到.aspx,點(diǎn)擊編輯(Edit...),復(fù)制Executable框的內(nèi)容.比如我的是:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll. 然后點(diǎn)擊Add,在打開的對(duì)話框里, Executable把剛才復(fù)制的路徑粘貼到這里,extension填寫html,然后確定保存.這樣我們就把對(duì).html頁(yè)面的請(qǐng)求交給了asp.net.
全部完成了,編譯下項(xiàng)目(中文環(huán)境叫 生成),打開url http://localhost/mytest/viewnews/2009/3/2.html,看會(huì)不會(huì)重寫到http://localhost//viewnews.aspx?id=2&year=2009&month=3
下面是我的例子的全部文件,大家可以下載然后看看.看一句代碼比看十句話都管用,對(duì)吧
http://xiazai.jb51.net/200911/yuanma/rewrittertest.rar
要注意的是,我的例子中,web網(wǎng)站的url配置成了http://localhost:8011,你可能需要更改下這個(gè)配置.方法是在網(wǎng)站項(xiàng)目上點(diǎn)右鍵,打開屬性.然后在Web頁(yè)面中修改.
作為一個(gè)初學(xué)者,可能對(duì)這些東西感覺挺煩的.如果你不想看長(zhǎng)篇大論,那最好的辦法就是看下我的代碼.我最近在學(xué)flex,對(duì)有些新東西也是處于忍無可忍的狀態(tài).春天到了,大家都比較煩躁,所以,靜下心來,慢慢來.
happy programming :)聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com