`
webcode
  • 浏览: 5940828 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Asp.Net中通常不修改IIS实现URL重写,支持任意扩展名及无扩展名(伪静态)

 
阅读更多

说到不用设置iis,主要是为了实现在虚拟主机或是拿不到iis操作限的时候,不能添加isap又想实现类似于静态化的程序实现方式,先声明,这里最终要实现的效果是,最终可以用

12345.html

替换

show.aspx?id=12345这样的地址访问

也可以实现百度空间的

http://hi.baidu.com/wu1987116

替换

http://hi.baidu.com/index.aspx?UserName=wu1987116

功能,支持任意扩展名及无扩展

程序要调整的部分只有两块。
一是web.config文件。
二是链接地址。
所需urlrewrite.dll

首先下载URLRewriter:http://download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi

下载安装后再bin目录下找到URLRewriter.dll文件

好了开始实施。
第一步:将urlrewrite.dll下载到你的web程序目录里去。哪都行。我是放在bin里面的。然后添加引用,将urlrewrite.dll引用进来。
第二步:修改web.config
这一步要修改几个地方。要注意位置是不同的

1 在web.config文件中加入如下代码,注意要放在<configuration>下面, <appSettings/>
<connectionStrings/> <system.web>上面不然会出错

<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>

其中

<section name="RewriterConfig"
type
="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />

用于指定配置节"RewriterConfig"的处理程序类的名称为”URLRewriter.Config.RewriterConfigSerializerSectionHandler”,该类存在于bin目录下的URLRewriter.dll文件中

2 在web.config文件中的system.web节点下加入如下代码

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

这段代码的意思是:将文件扩展名为.html和任意扩展名(包括无扩展名,不包括*.html,因为这个位置在上面会先处理)的文件的所有 HTTP 请求映射到类 URLRewriter.RewriterFactoryHandler,注意顺序,按从上到下执行,如果path="*"在上面的话,则下面的html映射则无效,下面步骤中有映射到那个页面的设置

3 重写url

和1一样 ,同样是放在<configuration>节点下面

关键就是

<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/(.+).html</LookFor>
<SendTo>~/Shownews.aspx?ShowID=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/(.+)</LookFor>
<SendTo>~/blog.aspx?UserName=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>

效果:当访问http://127.0.0.1/123.html时,实际访问的是http://127.0.0.1/Shownews.aspx?ShowID=123

访问http://127.0.0.1/任意字符时,实际访问的是http://127.0.0.1/blog.aspx?UserName=任意字符

注意第2,3步中的映射顺序

其中关键在url的转换

<LookFor>~/(.+).html</LookFor>

<SendTo>~/Shownews.aspx?ShowID=$1</SendTo>

意思是把第一个路径转成另一个路径。其中<LookFor>()中的正则表达式就是第二句中的参数$1 .

同样也可以用$2 $3来表示<LookFor>中第二 第三个()中的参数。

多个参数:

<ReWriterUrls>
<rule>
<old>(.*)/TestUrlRe/file(.*)/(.*)\.html</old>
<new>../WebForm1.aspx?id=$2&amp;type=$3</new>
</rule>
<rule>
<old>(.*)/TestUrlRe/t(.*)/(.*)\.html</old>
<new>../WebForm1.aspx?tid=$2&amp;ttype=$3</new>
</rule>
</ReWriterUrls>

第三步:在页面程序中可以这样写:
<a href="news_<%=newsid%>.html" target="_blank">新闻标题</a>

完成上面三个步骤就可以轻松实现URL重写了,不过需要注意的是:如果发布网站的话,你会发现你的URL重写有可能会失效,如果失效的话就需要您设置一下IIS:
打开IIS,主目录-〉配置-〉映射-〉点击“插入”通配符应用程序映射-〉选择“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”,然后把勾选去掉(一定要去掉),然后确定。
上面设置完毕之后,就可以正常浏览了。


分享到:
评论

相关推荐

    asp.net不用设置iis实现url重写 类似伪静态路由

    程序要调整的部分只有两块。一是web.config文件。二是链接地址。所需urlrewrite.dll ...下载安装后再bin目录下找到URLRewriter.dll文件 好了开始实施。第一步:将urlrewrite.dll下载到你的web程序...第二步:修改web.conf

    ASP.NET的UrlRewrite URL重写伪静态实例

    结构以上事实,然后伪静态技术产生了,规范的说就是URL重写技术,他对于ASPX格式支持最好,当然也可以重写HTML格式的文件,但这需要IIS的设置,相对比来说,ASPX格式的更方便,本站就是采用了该URL重写技术,这个...

    UrlReWrite(Url重写或伪静态)完美示例源码

    描 述:UrlReWrite(Url重写或伪静态)完美示例源码 UrlReWrite(Url重写或伪静态)完美示例源码,已利用ActionlessForm...幸而ASP.NET给我们提供了强大的可扩展性,能让我们自己定义页面的访问规则,很方便实现URL重写。

    Url重写篇视频------本讲将通过实例比较ASP.NET下的三种典型URL重写方案

    却无法检测非ASP.NET支持的文件扩展名的链接(我们固然可以在IIS中将所有类型的扩展名都映射到ASP.NET解析器,但是,如果我们有设置IIS的权限,为什么还要用性能更低,限制更多的ASP.NET方式的URL重写,而不使用基于...

    asp伪静态化/asp静态化/ASPURL重写/IIS Rewrite/RewriteRule/

    asp伪静态化/asp静态化/ASPURL重写/IIS Rewrite/RewriteRule/

    asp.net url 伪静态设置方法

    1、打开IIS管理,右击站点属性。 2、切换到“主目录“,点“配置“按纽. 3、打开应用程序配置,点”添加“按纽.... 您可能感兴趣的文章:ASP.NET网站伪静态下使用中文URL的方法asp.net不用设置iis实现url重写 类似伪

    win2003 iis asp.net伪静态配置图解

    一、【系统环境】 操作系统:windows2003 软件:iis 6.0 .net2.0以上 二、【配置伪静态步骤】 1.右键点击 要设置网站的网站 2.属性 ——》主目录 ——》配置——》 3.如右侧窗口,找到 .aspx 扩展名——》编辑——》...

    自定义IHttpModule实现URL重写示例代码

    这是本人博客上《用自定义IHttpModule实现URL重写》一文的示例代码,如果有未尽之处或者不明白之处请到本人博客上查看,网址是:http://blog.csdn.net/zhoufoxcn/archive/2009/07/14/4346356.aspx

    asp.net知识库

    HttpModule 实现 ASP.Net (*.aspx) 中文简繁体的自动转换,不用修改原有的任何代码,直接部署即可! 服务器自定义开发二之客户端脚本回发 Web开发: 使用URL重写WEB主题切换 如何在Asp.Net1.1中实现页面模板(所谓的...

    iis7下url重写后已存在的html不能访问了的解决方法

    当把.html的url都交与asp.net处理时(IIS不再插手了),伪.html可以对应aspx执行,而asp.net对真正的.html(但不符合重写规的)就不知道如何处理了,导致这次请求没有 作任何处理. 就出现了以下错误: ““/”应用程序...

    Asp.Net URL重写的具体实现

    说到不用设置iis,主要是为了实现在虚拟主机或是拿不到iis操作限的时候,不能...功能,支持任意扩展名及无扩展 程序要调整的部分只有两块。一是web.config文件。二是链接地址。所需urlrewrite.dll 首先下载URLRewriter:

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    大型互联网站由于访问量非常大,因此不是那些单纯用ASP.Net控件拖拽开发的开发人员能够开发的,也不是闭门造车能够造出来的,必须是在实际项目中经过无数访问者的使用、反馈、修改才能做出来的。搜房网、汽车之家等...

    IISURL重写组件(中文版)32位、64位rewrite_x32orx64_zh-CN.

    win2008以上的服务器IIS设置URL规则组件,伪静态规则设置

    ISAPI Rewrite 3 (IIS重写URL插件)

    书籍专业搜索引擎优化与ASP.NET :一个开发人员指南,以搜索引擎优化的克里斯蒂安Darie和Jaimie Sirovich 。  本文包括最流行的技术,如何运用静态的前瞻性和关键字达到网址在动态网站一步一步。

    iis6伪静态重写路径的配置步骤(.net项目)

     注:如果项目中有分页,那么需要添加“FormRewriterControlAdapter”程序集引用,否则不需要添加该引用。  下载地址:http://www.net.cn/service/ziliao/cpsc/200906/3842.html(万网/帮助中心(M享主机UrlRewrite...

    美女图库.net Framework 3.5 + sql server 2005

    1.使用Url重写实现伪静态功能。 2.支持批量导入,自动生成缩略图,大图和原始图。 3.批量导入请将图片上传到Images/Pending目录下。 4.需要在IIS设置将page后缀映射到asp.net处理程序。 5.图片浏览支持放大镜功能。 ...

    盛讯System v1.1

    默认支持 ASP.net 的文件重写,通过IIS重写既可支持任意格式重写,也能当做外部链接使用。 主题模板 模板语法支持 C#、VB,使用 Razor 解析,通过监控模板文件直接编译成运行代码,于传统解析模板相比大大提升运行...

    用ISAPI_Rewrite让IIS也支持如Apache下.htaccess的URL重写

    ASP.NET2.0这个东东不是服务器级的,不能胜任重写这个重任,那么只有交给ISAPI了,在网上搜索,还居然真有公司(组织)开发了这种东东!不可思议! 官方地址是:http://www.isapirewrite.com/ 下载到其中有一个文件...

    IIS7/IIS7.5 二级域名伪静态设置方法

    因为需要,一直在找IIS7.5二级域名伪静态的设置方法,但是一直没有找到,有的也是ASP.NET设置的,通过本人摸索,终于完成了,其实很简单,下面我一步步教大家怎么设置。  一、域名设置  这个就不多说了,大家都...

Global site tag (gtag.js) - Google Analytics