一、前台页面
1.先创建一个网站,添加一个Index.aspx页面,在源文件的form里面添加如下代码
<form id="form1" runat="server">
<div>
重写前
<a href="Detatil.aspx?id=1">商品1</a>
<a href="Detatil.aspx?id=2">商品2</a>
<hr />
重写后
<a href="goods_3.html">商品3</a>
<a href="goods_4.html">商品4</a>
</div>
</form>
2.Index.aspx页面的浏览效果如下
3.添加一个Detatil.aspx页面,在源文件的form里面添加如下代码
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
4.在Detatil.aspx页面后台load事件里面添加如下代码
protected void Page_Load(object sender, EventArgs e)
{
//接受id值
string id = Request["id"].ToString();
this.Label1.Text = "商品编号:" + id;
}
5.创建一个类,命名为ReWrite,ReWrite类的具体代码如下
public class ReWrite:IHttpModule
{
void IHttpModule.Dispose()
{
}
void IHttpModule.Init(HttpApplication context)
{
context.BeginRequest+=context_BeginRequest;
}
private void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication http = sender as HttpApplication;
string url = http.Request.RawUrl;
//制定正则表达式规则,判断是否重写url
Regex r= new Regex(@"goods_\d+\.html");
if (r.IsMatch(url))//如果满足条件,就重写url
{
var id =url.Split('_', '.');//截取到id
http.Context.RewritePath("Detatil.aspx?id=" + id[1]);
}
}
}
当点击“商品1”时候,显示如下
页面的url没有重写,会暴露出这个网页的后缀名aspx,不安全。
当点击“商品3”时候,显示如下
可以看到,当点击“商品3”的时候,页面的url重写了,不再显示aspx了
总结
以上就是今天要讲的内容,简单介绍了在asp.net中实现url的重写