ASP.NET——URL重写,伪静态

我们用.net开发的网站,都是动态网页。其扩展名一般是.aspx,ashx等。有的时候还带着参数,如:http://www.NLYJF.com/user/blogs.aspx?id=2123 此类样式的URL,这样的格式对用户来说,很难看,感觉很不舒服。而搜索引擎在收录链接的时候,排名也会靠后。因此我们有必要把URL写成类似于: http://www.NLYJF.com/user/blogs/2123.html 这样的形式。

在用户输入.html的时候,其实访问的是.aspx格式的网页,只不过中间被“转换”了一下。

URL重写:

①新建一个全局配置文件,Global.asax。

②在Global.asax中,在BeginRequest阶段添加代码

BeginRequest
void Application_BeginRequest(object sender,EventArgs e)
{
//Accept the URL inputed by users
string url=Request.RawUrl;

Regex regex=new Regex(@"user/blogs/(\d+).htm");

Match match=regex.Match(url);
if(match.Success)
{

string id=match.Gourp[1].Value;

string s="user/blogs.aspx?id="+id;

HttpContext.Current.RewritePath(s);
}
}

要想URL重写,肯定是会用到正则表达式的。

这样,就成功了。

——————————————————————

另外,微软还提供了一个dll文件,URLWriter.dll ,

我们也可以使用它来直接进行URL重写。

①添加引用URLwriter.dll文件

②在web.config文件中,找到<configSections>节点,在结束标志</configSections>前添加代码

第一步
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandlers, URLRewriter">

</configSections>

③在web.config文件中,还是找到<configSections>节点,在结束标志</configSections>后,添加代码

第二步
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/user/blogs.aspx</LookFor>
<SendTo>~/user/blogs.aspx?id=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>

④找到节点<httpHandlers>,在<httpHandlers>中添加

<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler,URLRewriter"/>

 

你可能感兴趣的:(asp.net)