zoukankan      html  css  js  c++  java
  • UrlRewriter && IIS7

    为了在动态网站获得更好的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复制即可

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

  • 相关阅读:
    HttpURLConnection请求网络数据的GET请求
    ImageLoader的Jar包加载图片
    使用HttpUtils 上传视频文件
    VideoView的视频播放
    VideoView的视频的全屏播放
    Android中在activity中弹出一个popwindow
    随心而记
    Java -- springboot 配置 freemarker
    Tensorflow替换静态图中的OP
    python 系统定时关机
  • 原文地址:https://www.cnblogs.com/cxd4321/p/3393266.html
Copyright © 2011-2022 走看看