URL重定向一般代碼
myrewritter.cs,代碼
要重寫,首先是截獲url請(qǐng)求,然后分析當(dāng)時(shí)的url,最后跳轉(zhuǎn)到相應(yīng)的頁面.所以我們第一步是要截獲url請(qǐng)求.為此新建一個(gè)類庫叫URL,在該類庫中引用URLRewriter.dll.新建一個(gè)類myrewritter.cs,代碼如下
namespace URL
{
public class myrewritter : URLRewriter.BaseModuleRewriter
{
protected override void Rewrite(string requestedPath,HttpApplication app)
{
if (requestedPath.Contains("news/2011/3/2.html"))
app.Context.RewritePath("/news.aspx?id=2&year=2011&month=3");
else
app.Context.RewritePath("/here.aspx");
}
}
}
可以看到該類繼承了URLRewriter.BaseModuleRewriter,然后在Rewrite方法中加入了我們自己的邏輯.現(xiàn)在,只要當(dāng)前的url請(qǐng)求是news/2011/3/2.html,我們就會(huì)將頁面重寫到/news.aspx?id=2&year=2011&month=3. 這只是一個(gè)簡單的例子,實(shí)際上對(duì)于url的判斷,一般是用正則表達(dá)式來完成.而頁面和頁面間的對(duì)應(yīng)關(guān)系,可能需要通過查詢數(shù)據(jù)庫完成.
web.config代碼
接下來在網(wǎng)站項(xiàng)目中引用這個(gè)類庫.然后修改下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>
步驟總結(jié)
大家可以看到我新加了個(gè)httpModules.這個(gè)的作用是,如果有url請(qǐng)求,asp/net會(huì)先把請(qǐng)求傳到你指定的這個(gè)類中來.add那一行了,前面的是要接收請(qǐng)求的類,后面的是這個(gè)類所在的dll的名字. 添加完這一句后,一切就快結(jié)束了.由于我們要處理的是.html的頁面,所以需要配置下iis.因?yàn)槟J(rèn)asp/net的處理引擎不會(huì)管.html.我們要做的是用處理asp .net的那個(gè)程序來處理html頁面.打開iis.找到你的網(wǎng)站,點(diǎn)右鍵打開屬性.找到主目錄(Home Directory),打開配置(Configuration)對(duì)話框. 在Application extensions列表里找到.aspx,點(diǎn)擊編輯(Edit...),復(fù)制Executable框的內(nèi)容。