为了在动态网站获得更好的url体验,往往采用url重写技术。

比如:http://blog.xujif.com/?p=268 可以重写为 http://blog.xujif.com/archives/wordpress-rss-feed-error/

更多介绍:传送门:http://msdn.microsoft.com/zh-cn/library/ms972974.aspx

IIS级别可以实现url重写。这里说的是asp.net级别的

在asp.net级别的url重写中,用到一个HttpModule模块

举个例子:新建类库

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
namespace UrlRewrite
{
    public class UrlRewrite : IHttpModule
    {
        public void Dispose()
        {
            // throw new NotImplementedException();
        }
        public void Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(BeginRequest);
        }
        public void BeginRequest(object sender, EventArgs e)
        {
            HttpApplication app = sender as HttpApplication;
            HttpUrlRewrite(app.Context);
        }
        public void HttpUrlRewrite(HttpContext context)
        {
            string url = context.Request.Url.ToString();
            context.RewritePath("~/Default.aspx", null, "url=" + url);
        }
    }
}

这个例子是把对网站的所有请求都转发给~/Default.aspx,然后把请求的url作为参数传递它。

如果在Default.aspx.cs里

1
2
3
4
5
6
7
protected void Page_Load(object sender, EventArgs e)
 
{
 
Response.Write(Request["url"]);
 
}

然后在web.config里注册一下啊   (确保UrlRewrite.dll已经编译到bin目录了)

1
2
3
4
5
6
7
<system.web>
    <httpModules>
        <add name="UrlRewrite" type="UrlRewrite.UrlRewrite,UrlRewrite"/>
    </httpModules>
    <compilation debug="true"/>
    <pages/>
</system.web>

然后在vs里编译一下,就可以发现访问 http://site.com/xxxxxx.aspx  甚至  http://site.com/yyyy   都能输出了

但是,如果发布到iis7下去,又发现不工作了。

这时只要添加这一段到web.config,就可以了(不需要配置IIS7)(具体含义可以搜索单词)

1
2
3
4
5
6
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <add name="UrlRewriter" type="UrlRewrite.UrlRewrite,UrlRewrite"/>
    </modules>
    <validation validateIntegratedModeConfiguration="false"/>
</system.webServer>

如果是IIS6,则添加一个 “通配符应用程序映射”(或者实现为静态的.html等)

可执行文件从.aspx复制即可

去掉 确认文件是否存在的勾 就可以了

UrlRewriter && IIS7的更多相关文章

  1. framework4.0 IIS7下urlrewriter设置问题

    framework4.0 IIS7下urlrewriter设置问题 http://www.cnblogs.com/litian/articles/alex.html IIS开启伪静态后html静态页面 ...

  2. IIS7下使用4.0框架集成模式URLRewriter重写中文URL乱码问题

    解决方法: 1 url中中文先通过Server.UrlEncode编码 2 修改网站编码 3.更改URLRewriter.net中源码 找到RewriterEngine类中 private strin ...

  3. iis6|iis7|配置URLRewriter|64位操作系统下|.net2.0|.net4.0|配置URLRewriter|Web.config配置详情

    想必很多ASP.NET的码友们在IIS配置伪静态被严重纠结过不止一次两次,本园主经过多次站点伪静态配置,总结了一下,IIS版本:IIS 6.IIS 7,服务器:Windows Server 2003. ...

  4. .NET4.0下网站应用法度用UrlRewriter.dll重写无后缀路径 (在IIS7.5中的设备办法)

    .NET4.0下网站应用法度用UrlRewriter.dll重写无后缀路径 在IIS中新建网站(端标语8111) 直接运行http://localhost:8111/ 设备办法: 二.添加通配符脚本映 ...

  5. IIS7.0 下使用Intelligencia.UrlRewriter时Session为空问题

    背景 新年伊始,本人的开发环境由Windows Server 2003 +IIS 6 升级成了 Windows Server 2008 +IIS 7,之后便着手参加新项目的开发.项目开发后期测试过程中 ...

  6. IIS7下.NET4.0 网站UrlRewriter.dll重写无后缀路径 失效

    解决方法: 1.添加通配符脚本映射,选择:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll 2.找到和网站相对的连接池,选择 ...

  7. IIS7.5+WebConfig实现页面伪静态和301重定向

    IIS7.5+WebConfig实现页面伪静态和301重定向 使用URLRewriter组件在windows 2003 +iis 6.0下配置伪静态的文章网络上一大堆.但在iis7.0或iis 7.5 ...

  8. IIS7.5 伪静态 脚本映射 配置方法

    首先,是IIS7.0的配置,由于Windows Server 2008操作系统默认的IIS版本为7.0,我们知道,IIS7.0与IIS6.0 核心注意的地方:先要将应用池设置为集成模式,修改OK后,再 ...

  9. ASP.NET在IIS7.5(IIS7)配置伪静态

    http://jingyan.baidu.com/article/67508eb4ff92c69cca1ce49a.html 我相信不少站长都遇到个头疼的问题..NET如何在IIS7或者IIS7.5下 ...

随机推荐

  1. [POI2013]Polaryzacja

    [POI2013]Polaryzacja 题目大意: 给定一棵\(n(n\le250000)\)个点的树,可以对每条边定向成一个有向图,这张有向图的可达点对数为树上有路径从\(u\)到达\(v\)的点 ...

  2. Xtreme8.0 - Sum it up 水题

    Sum it up 题目连接: https://www.hackerrank.com/contests/ieeextreme-challenges/challenges/sum-it-up Descr ...

  3. SLAM(一)----学习资料整理

    转自:http://www.cnblogs.com/wenhust/ 书籍: 1.必读经典 Thrun S, Burgard W, Fox D. <Probabilistic robotics& ...

  4. java判断集合是否重复的一种便捷方法

    内容来自其它网站,感谢原作者! import java.util.ArrayList; import java.util.HashSet; import java.util.List; /** * 通 ...

  5. Maven 项目不打包 *.hbm.xml 映射文件

    使用 Maven 部署 Java Web 项目时,Hibernate 的映射文件 *.hbm.xml 没有被打包部署到目标目录下,解决方法:在 pom.xml 文件中 <build> 节点 ...

  6. Slickflow.NET 开源工作流引擎高级开发(一) -- 流程外部事件的调用和变量存储实现

    前言:流程实现基本流转功能外,通常也需要调用外部事件,用于和业务系统的交互,同时存储一些流程变量,用于追踪和记录业务数据变化对流程流转的影响. 1. 流程事件 流程执行过程中,伴随各种事件的发生,而且 ...

  7. Ubuntu下实现软路由(转)

    参考:http://www.openwrt.pro/post-292.html 个人看法: 1.实现路由在Linux下必须要用到iptables进行转发,这才是路由核心. 2.我觉得对于Linux来说 ...

  8. 如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接(转)

    前期准备: 关于什么是Hierarchy Viewer,请查看官方文档:http://developer.android.com/tools/debugging/debugging-ui.html.个 ...

  9. Unity中Web.Config文件的配置与调用

    在上一篇文章“Unit简单依赖注入”我们可以实现构造对象和被依赖对象之间的 松耦合,使我们的抽象层(Player)能够保持稳定,但是在并没有把客户类和Player类之间彻底解耦,即当我们不想使用MP3 ...

  10. RabbitMQ简单使用

    环境搭建: RabitMQ是用Elang编写的,虽然Elang本身是跨平台的,但也同时意味着搭建Rabit环境需要首先配置Elang环境.配置RabitMQ的网上教程还比较多的: windows 下 ...