以下是你一个简单示例
一.新建一个空的网页项目程序:
二.将以下代码写在单独的类中,然后在页的CS文件中引入
using System;
using System.IO;
using System.Web;
using System.Web.UI;
namespace URL
{
public class OLPage : Page
{
public OLPage()
{ }
protected override void Render(HtmlTextWriter writer)
{
if (writer is System.Web.UI.Html32TextWriter)
{
writer = new FormFixerHtml32TextWriter(writer.InnerWriter);
}
else
{
writer = new FormFixerHtmlTextWriter(writer.InnerWriter);
}
base.Render(writer);
}
}
internal class FormFixerHtml32TextWriter : System.Web.UI.Html32TextWriter
{
private string _url; // 假的URL
internal FormFixerHtml32TextWriter(TextWriter writer)
: base(writer)
{
_url = HttpContext.Current.Request.RawUrl;
}
public override void WriteAttribute(string name, string value, bool encode)
{
if (_url != null && string.Compare(name, “action”, true) == 0)
{
value = _url;
}
base.WriteAttribute(name, value, encode);
}
}
internal class FormFixerHtmlTextWriter : System.Web.UI.HtmlTextWriter
{
private string _url;
internal FormFixerHtmlTextWriter(TextWriter writer)
: base(writer)
{
_url = HttpContext.Current.Request.RawUrl;
}
public override void WriteAttribute(string name, string value, bool encode)
{
if (_url != null && string.Compare(name, “action”, true) == 0)
{
value = _url;
}
base.WriteAttribute(name, value, encode);
}
}
}
三.以WEB配置文件写成如下:
<?xml version=”1.0″?>
<!–overred–>
<configuration>
<configSections>
<section name=”RewriterConfig”
type=”URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter”/>
</configSections>
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/d(\d+)\.aspx</LookFor>
<SendTo>~/default.aspx?id=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/d(\d+)\.html</LookFor>
<SendTo>~/default.aspx?id=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
<system.web>
<httpHandlers>
<add verb=”*” path=”*.aspx”
type=”URLRewriter.RewriterFactoryHandler, URLRewriter”/>
<add verb=”*” path=”*.html” type=”URLRewriter.RewriterFactoryHandler, URLRewriter”/>
</httpHandlers>
<compilation debug=”true”/></system.web>
</configuration>
四.将URLRewriter.dll文件下载,并将其放到要目录的BIN目录内
五.将要实现转发的页的CS文件的将继承改为url.OLPage
例:
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using URL;
public partial class _Default :URL.OLPage
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString.Count > 0)
{
Response.Write(Request.QueryString[“id”].ToString());
}
}
}
最后,可以在将d4646.html或d454.aspx的页面转发到default.aspx?id=4646或default.aspx?id454
例:http://localhost:4875/URLRewriteTest2/d4546.html
实际为:http://localhost:4875/URLRewriteTest2/default.aspx?id=4546