教程集 www.jiaochengji.com
教程集 >  脚本编程  >  Asp.net  >  正文 asp.net 伪静态 URL重写的纯代码实现方法

asp.net 伪静态 URL重写的纯代码实现方法

发布时间:2016-04-01   编辑:jiaochengji.com
本文介绍下,用纯代码的方式实现asp.net的伪静态页面,即URL重写功能。有需要的朋友,可以参考学习下。

本例要求实现:
ShowPlay1.aspx重写到ShowPlay.aspx?vid=1。

具体操作步骤如下:

1、下载本dll,放到网站跟目录下bin目录下。
urlrewriter.dll的下载地址:
1、URL重写urlrewriter.dll组件下载地址(附完整示例代码)
2、微软URL重写组件urlrewriter.dll下载地址

2、在Web.Config的<system.web>和</system.web>添加以下节点:
 

复制代码 代码示例:
<httpModules>
   <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
</httpModules>

3、在Web.Config的<configuration>和</configuration>添加以下节点:
 

复制代码 代码示例:
<configSections>
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
 </configSections>
<RewriterConfig>
  <Rules>
   <!-- 重写规则-->
   <RewriterRule>
    <!--要实现的url格式-->
    <LookFor>~/ShowPlay-(\d{1,4})\.aspx</LookFor>
    <!--真实的url地址.$1.$2,$3...$N代表正则匹配的第N个表达式-->
    <SendTo>~/ShowPlay.aspx?vid=$1</SendTo>
   </RewriterRule>
  </Rules>
 </RewriterConfig>

4、在网页中添加类似 ShowPlay-1.aspx 的连接 将被重写到 ShowPlay.asp?vid=1

二.实现http://www.jbxue.com/ShowPlay1/重写到http://www.jbxue.com/ShowPlay.aspx?vid=1

方法与一的步骤相同,需要额外保证:将Default.aspx添加到网站默认主文档,网站目录下要存在ShowPlay1目录 并且ShowPlay1目录下要有Default.aspx.
相应的重写规则应改为
 

<!--要实现的url格式-->
    <LookFor>~/ShowPlay-(\d{1,4})/Default\.aspx</LookFor>
    <!--真实的url地址.$1.$2,$3...$N代表正则匹配的第N个表达式-->
<SendTo>~/ShowPlay.aspx?vid=$1</SendTo>

注意:
1、不能使用Windows身份验证用户权限. 应使用Form验证,在web.config配置为:<authentication mode="Forms" />
2、使用Request.ServerVariables["script_name"]获得的路径仍然是:ShowPlay.asp?vid=1
3、被重写的地址如果回发,重写将失效 显示的地址将是ShowPlay.asp?vid=1
4、后缀名必须为.aspx.如果是其他自定义后缀名,如.net  请在iis将.net映射到aspnet_isapi.dll.这样.net请求才能到达asp.net引擎.

有关urlrewrite伪静态的原理分析,请参考:
http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?pf=true

您可能感兴趣的文章:
伪静态几种做法
asp.net伪静态后真正的静态文件无法访问的解决方法
asp.net 伪静态 URL重写的纯代码实现方法
php 伪静态 url重写简单示例
IIS7 伪静态支持环境配置(修改web.config)
php 伪静态(url重写)的写法
php环境中url伪静态和Gzip同时开启相关问题与解决办法
php中url伪静态和Gzip同时开启引发冲突的原因与解决方法
aspnet_isapi.dll实现无后缀名的url重写(伪静态)
php伪静态如何获取地址栏url

[关闭]
~ ~