• 利用Intelligencia.UrlRewriter.dll实现URL重写


    1.下载Intelligencia.UrlRewriter.dll文件 urlrewriter.net

    2.添加引用

    3.设置Web.Config配置文件

    <?xml version="1.0" encoding="utf-8"?>

    <configuration>


        <configSections>
            <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
        </configSections>

       <rewriter>
            <rewrite url="~/(.+).html$" to="~/Default.aspx?ID=$1" />   //即把$1的值给括号的地方 
        </rewriter>
     
        
        <system.web>
            <httpModules>
                <add type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter" name="UrlRewriter"/>
            </httpModules>
     
        </system.web>
        
    </configuration>

    4.新建两个页面(Default.aspx,UrlRewtite.aspx)

    Default.aspx界面

    public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Response.Write("这是经过重写的~~~~~~~~~~"); 
            }
        }

    UrlRewtite.aspx 界面

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestUrlRewrite.aspx.cs" Inherits="WebPractise.TestUrlRewrite" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">

    <html xmlns="http://www.w3.org/1999/xhtml " >
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <a href="123.html">test</a> 
        </div>
        </form>
    </body>
    </html>

    5.用户看到的是浏览123.html,实际上 是 由Default.aspx界面 处理的。

    注意:

    当使用通配符映射或者使用ASP.NET处理所有HTTP请求的时候,IIS的默认文档机制也就失去了该有的作用,以下代码就是用来重新实现默认文档的方法:

    <rewrite url="^(.*)/(\?.+)?$" to="$1/default.aspx$2" />

    注意:使用“processing="restart"”的时候将会导致重写引擎从头开始执行所有的重写规则,此时应当注重包含“/default.aspx”字符串的处理。

    如果你需要同时支持多个默认文档,那么以上代码需要修改为:

    <if url="^(.*)/(\?.+)?$">
    <rewrite exists="$1/default.aspx" to="$1/default.aspx$2" />
    <rewrite exists="$1/index.aspx" to="$1/index.aspx$2" />
    <rewrite exists="$1/index.html" to="$1/index.html$2" />
    </if>

    编辑以上规则代码的时候,尤其要注意确认文件是否存在。

    此外,在使用通配符映射或者使用ASP.NET处理所有HTTP请求的时候,你会发现.gif、.css等文件无法正常访问,这是因为此时对这些文件类型的处理都被ASP.NET所拦截。修正方法如下:

    <rewrite 
    url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.css|\.js)(\?.+)?)$"
    to="$1" processing="stop" />

    两个比较特殊的正则表达式字符是“^”和“$”(不是必须的),“^”代表URL的开头,“$”代表URL的结尾。使用这两个符号可以使您更加精确的控制重写动作,以确保程序所匹配的URL正是您想处理的。

    “~/”表示当前网站应用程序运行所在的虚拟根目录,当您把网站应用程序安装于虚拟目录(或者非根目录)的时候,这尤其有用,而无须重新编写任何代码来替换您的虚拟根路径。

    模式匹配在处理查询字串(QueryStrings)的时候尤其有用,这可以让您的URL去掉类似于“?id=3”的代码段,这非常有用,可以让你轻松的实现伪静态。

    下面列出两个我们认为非常有特色的重写规则:

    (1) 当目标URL不包含自定义查询字串的时候:

    <rewrite url="^~/mypage(\?.+)?$" to="~/default.aspx$1" />

    此时“$1”匹配的是(\?.+)?,也就是所有的查询字串。

    (2) 当目标URL包含自定义查询字串的时候:

    <rewrite url="^~/mypage(\?(.+))?$" 
    to="~/default.aspx?page=mypage&$2" />

    注意此时需要使用“&amp;”来代替“&”,这是XML文档语法的需要。

  • 相关阅读:
    2018-2019-1 20165321 20165324 20165302 实验四 外设驱动程序设计
    2018-2019-1 20165324 20165302 20165321 《信息安全系统设计基础》 第三次实验
    2018-2019-1 20165321 《信息安全系统设计基础》第七周学习总结
    2018-2019-1 20165321 《信息安全系统设计基础》第六周学习总结
    20165321 20165302 02165324 实验二 固件程序设计
    2018-2019-1 20165321 《信息安全系统设计基础》第五周学习总结
    2018-2019-1 20165302 20165321 20165324 实验一 开发环境的熟悉
    2018-2019-1 201653121 《信息安全系统设计基础》第三周学习总结
    2017-2018-2 20179205 《网络攻防技术与实践》第四周学习
    2017-2018-2 20179205《网络攻防技术与实践》第三周学习
  • 原文地址:https://www.cnblogs.com/smallmuda/p/1780903.html
Copyright © 2020-2023  润新知