UrlRewrite之无后缀URL配置方法

二:ihttpmodule的rewritepath方法

自己来,怎么来?用c++写个isapi会不会?答:不会。

还是老实的用.net写好了。

那就来点简单的了:从global.asax折腾到ihttphandle,折腾了半天,搞错了方向,转来转去还是在原地,后来经地的那么一搜,才发现了,路子要走还得往ihttpmodule上走。

用ihttpmodule很容易,很多人都用这个折腾,写个类继承自ihttpmodule,然后到配置文件里注册一下就可以了,示例如下:

1:新建类库项目:起名:urlrewrite

2:添加引用system.web,因为ihttpmodule在这名称空间下,而类库默认是没引用这个的

3:把class1.cs更名为urlrewrite.cs,并让类继承自ihttpmodule,实现接口,最终如下:

把着我们把代码小小调整一下如:

#region ihttpmodule 成员

public void dispose()
{
//throw new exception("the method or operation is not implemented.");
}

public void init(httpapplication context)
{
context.beginrequest += new eventhandler(context_beginrequest);
}

void context_beginrequest(object sender, eventargs e)
{
httpapplication app = (httpapplication)sender;
httpurlrewrite(app.context);
}
public void httpurlrewrite(httpcontext context)
{
string url = context.request.url.tostring();//用户请求的url
//--这里要做很多url逻辑处理
context.rewritepath("~/default.asp教程x", null,"url="+url);

}
#endregion

上面的代码,意思为:

将整个请求的url都当成参数送到default.aspx页面中,所有的请求都转化为default.aspx?url=www.cyqdata.com类似的方式

下面再建一个站点,来接受并输出结果:

4:添加新建网站起名:urlrewritedemo

ps教程:本来是要建应用程序的,怕大伙下载示例时打不开,所以示例用网站形式

5:添加对urlrewrite项目的引用

6:f5一下,调出web.config,然后在配置文件添加配置项代码如下:

< httpmodules>
< add name="urlrewrite" type="urlrewrite.urlrewrite,urlrewrite" />
< /httpmodules>

目前情况示例如图:

然后到default.aspx写一行代码输出接收到的参数:

protected void page_load(object sender, eventargs e)
{
response.write(request["url"]);
}

一切就绪,运行,我们看结果:

图1:请求默认存在的页面,输出结果,表示很正常

图2:随便请求一个不存在页面,输出了结果,表示也很正常

图3:请求一个连后缀都没有的url,输出了结果,表示有点惊讶

从图3看出,看来vs2005集成的iis对所有的请求都统一处理了,所以连无后缀的也能处理

重点说明:

对于以iis站点开发或最终部署来说,默认aspnet_isapi.dll是处理不了无后缀或图片等后缀的,因此,需要通过添加扩展“通用映射”能达到此功能。

时间: 2024-09-20 00:36:40

UrlRewrite之无后缀URL配置方法的相关文章

秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三)

文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用   2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程   本节,将从 秋色园 的整站入口:UrlRewrite.dll入手解析无后缀原理.   鉴于园子里有很多UrlRewrite的文章,因此就不略为简单的讲解了:   一:用ISAPI筛选器:即网上第三方发布的比较常见的,如:RewriteEval.dll   秋色园早期的版本始于2007,使用的就是第三方

三种apache Rewrite url配置方法

三种apache Rewrite url配置方法 方案1:最简单,不用配置Apache URI效果:php教程/subject/4843637/">http://movie.example.com/index.php/subject/4843637/ 案例:MediaWiki todo 方案2:配置Apache URL rewrite,重定向至index.php,带参数 URI效果:http://movie.example.com/subject/4843637/ 案例:MediaWiki

Apache中Mod_Rewrite重写url配置方法

首先确认你已经开启服务器的路由重写模块,如果不确认,请在httpd.conf文件中查找如下代码,并将前面的#符号删除,重启服务器,即开启了重写模块 第一步:找到apache的配置文件httpd.conf(文件在conf目录下) 第二步:你首先必须得让服务器支持mod_rewrite,如果你使用的是虚拟主机,请事先询问你的主机提供商. 打开httpd.conf,找到  代码如下 复制代码 #LoadModule rewrite_module modules/mod_rewrite.so 把#去掉

Global.asax的Application_BeginRequest实现url重写无后缀的代码_实用技巧

利用Global.asax的Application_BeginRequest 实现url 重写 无后缀 复制代码 代码如下: <%@ Application Language="C#" %> <script RunAt="server"> void Application_BeginRequest(object sender, EventArgs e) { string oldUrl = System.Web.HttpContext.Curr

asp.net在windows server2003服务器上面怎样实现无后缀名的伪静态

问题描述 asp.net在windows server2003服务器上面怎样实现无后缀名的伪静态 最近在做一个项目中,遇到一个非常棘手的问题,查阅了很多资料,一直没有解决,希望哪位大侠能帮助下我,鄙人将不甚感激!问题是这样的:整个项目的编程语言,是用asp.net开发的,应客户需求,需在项目中进行url地址伪静态,我用微软自带的组件UrlRewriter.dll实现的,在xp上面,都能实现有后缀名和无后缀名的伪静态,如:http://www.xxx.com/aa/text.htmlhttp://

使IIS支持PHP,ISAPI或CGI,FastCGI完全配置教程(最新php5.2.13配置方法)_win服务器

在Windows Server 2003的IIS6下配置ISAPI方式的PHP,配置方法是,在IIS的"WEB服务扩展"中,添加一个新的WEB服务扩展,程序后缀为PHP,ISAPI程序为php5isapi.dll,然后再我的电脑->属性->高级->"环境变量"-"系统变量"中增加变量名PHPRC,数值为php.ini的路径,在Internet信息服务管理器中,选择网站或应用程序的根目录,打开目录属性页(右键选择"属性&

Nginx下ThinkPHP5的配置方法详解

本文主要给大家介绍了关于Nginx下ThinkPHP5的配置方法,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍: url里public目录的隐藏 出于安全的考虑,TP5的入口文件改成放在public下了,因为这样的话能防止被恶意用户访问到"/thinkphp/"."/vendor/"等等这些目录下的文件.所以当你以之前的习惯将网站documentroot配置为项目根目录的时候就会需要在url后面加上/public/来访问.当然可能也会有童鞋把入口文件放

自动化Nginx服务器的反向代理的配置方法

  这篇文章主要介绍了自动化Nginx服务器的反向代理的配置方法,反向代理是Nginx服务器的招牌功能,需要的朋友可以参考下 如果可以减少过多的外部隔离的API和简化部署的细节 这会是非常好的. 在以前的文章中,我解释了"一些使用反向代理的好处".在我目前的项目里,我们已经构建分布式面向服务的架构,也显式提供了一个HTTP API,我们使用反向代理将请求路由通过API路由给单个组件.我们选择了Nginx Web这个优秀的服务器作为我们的反向代理,它快速.可靠且易于配置.我们通过它将多个

linux服务器下LNMP安装与配置方法

现在很多朋友都选择了linux服务器下配置LNMP(linux+nginx+mysql+php),这里分享下LNMP安装与配置方法,需要的朋友可以参考下   Nginx与apache.lighttp性能综合对比,如下图: 注意:关闭rpm默认安装的apache和mysql 1.准备php函数的rpm包 yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-de