网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

在 ASP.NET 中执行 URL 重写 (UrlRewrite)

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/13
设我们已创建了名为 ListProductsByCategory.aspx 的 ASP.NET 网页,该网页在查询字符串中接受类别 ID 值,并显示属于该类的所有产品。因此,要查看我们销售的饮料的用户可以访问 ListProductsByCategory.aspx?CategoryID=1,而那些要查看奶制品的用户可以访问 ListProductsByCategory.aspx?CategoryID=4。此外,还假设我们有一个名为 ListCategories.aspx 的页面,该页面列出了待售的所有产品类别。

很显然,这是一个 URL 重写事例,因为提供给用户的 URL 没有为用户带来任何意义,也没有为他们提供任何“可删节性”。因此,让我们使用 URL 重写,以便在用户访问 /Products/Beverages.aspx 时,他们的 URL 将被重写为 ListProductsByCategory.aspx?CategoryID=1。我们可以在 Web.config 文件中使用以下 URL 重写规则来实现此功能。

<RewriterConfig><Rules><!-- 产品制表者规则 --><RewriterRule><LookFor>~/Products/Beverages\.aspx</LookFor><SendTo>~/ListProductsByCategory.aspx?CategoryID=1</SendTo></RewriterRule><RewriterRule></Rules></RewriterConfig>

正如您可以看到的,此规则将进行搜索,以查看用户请求的路径是否为 /Products/Beverages.aspx。如果是,它便将 URL 重写为 /ListProductsByCategory.aspx?CategoryID=1。

注意:请注意,<LookFor> 元素对 Beverages.aspx 中的句点进行了转义。这是因为在正则表达式模式中使用了 <LookFor> 值,并且句点是正则表达式中的特殊字符,该字符表示“匹配任意字符”,例如,与 URL /Products/BeveragesQaspx 匹配。通过转义句点(使用 \.),可以表明我们要匹配的是文字句点,而不是任何旧的字符。

有了此规则之后,当用户访问 /Products/Beverages.aspx 时,页面上将显示待售的饮料。图 3 显示了访问 /Products/Beverages.aspx 的浏览器的快照。请注意,在浏览器的地址栏中,URL 将读取 /Products/Beverages.aspx,但用户实际看到的是 ListProductsByCategory.aspx?CategoryID=1 的内容。(实际上,Web 服务器上根本不存在 /Products/Beverages.aspx 文件!)


图 3. 重写 URL 之后请求类别

与 /Products/Beverages.aspx 相似,下面我们要为其他产品类别添加重写规则。此操作仅包括在 Web.config 文件的 <Rules> 元素内添加附加的 <RewriterRule> 元素。请参阅下载内容中的 Web.config 文件,以获取用于此演示的一组完整的重写规则。

为了使 URL 更具可删节性,最好使用户只需从 /Products/Beverages.aspx 中删除 Beverages.aspx 即可看到产品类别的列表。乍一看,这可能是一项很普通的任务(只需添加一个将 /Products/ 映射到 /ListCategories.aspx 的重写规则即可)。但此操作存在一个微妙之处,即您必须首先创建一个 /Products/ 目录,并在 /Products/ 目录中添加一个空的 Default.aspx 文件。

要理解需要执行这些额外步骤的原因,可以参考前面的内容,即 URL 重写引擎位于 ASP.NET 级别上。也就是说,如果 ASP.NET 引擎永远没有机会处理请求,URL 重写引擎就没有办法检测传入的 URL。而且,请记住,仅当被请求的文件具有相应的扩展名时,IIS 才会将传入请求传递给 ASP.NET 引擎。因此,如果用户访问 /Products/,而 IIS 没有看到任何文件扩展名,那么它将检查目录,以查看是否存在这样一个文件,即该文件名为默认文件名中的一个。(Default.aspx、Default.htm、Default.asp 等等。“IIS 管理”对话框中“Web 服务器属性”对话框的“文档”选项卡对这些默认文件名进行了定义。)当然,如果 /Products/ 目录不存在

  • 上一篇资讯: ASP.NET 2.0预编译详解
  • 网学推荐

    免费论文

    原创论文

    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号