【问题标题】:How to get rid of actual file-name in URL?如何摆脱 URL 中的实际文件名?
【发布时间】:2011-12-04 02:14:45
【问题描述】:

例如,这个 url 是 http://stackoverflow.com/questions/ask,而不是像 http://stackoverflow.com/questions/ask.aspx 这样的东西。我怎样才能做到这一点?

【问题讨论】:

  • ASP.NET routing 使您能够使用不必映射到网站中特定文件的 URL。由于 URL 不必映射到文件,因此您可以使用描述用户操作的 URL,因此用户更容易理解。
  • 是 asp.net 路由一个通用特性还是特别是 MVC 的一个组件(或者这是否重要)
  • @Gabriel,由于已经接受了使用古老和非推荐解决方案的答案,我想说没关系。 :)

标签: asp.net iis url


【解决方案1】:

当网络服务器实现一个将给定 URL 模式映射到要提供的实际内容的处理程序时,就会发生这种情况。

在本站,大概是来自MVC框架的使用(猜测)。

在 Windows IIS 上,您可以使用 http://www.iis.net/download/URLRewrite

【讨论】:

    【解决方案2】:

    你可以使用这些技巧和工具:

    http://forums.iis.net/t/1150350.aspx - IIS 解决方案

    http://forums.asp.net/t/979581.aspx - ASP.NET 404 页面解决方案

    【讨论】:

      【解决方案3】:

      添加对程序集 System.Web.Routing 的引用,然后将以下内容添加到您的 global.asax 文件中:

      protected void Application_Start(object sender, EventArgs e)
      {
           RegisterRoutes(RouteTable.Routes);
      }
      
      public static void RegisterRoutes(RouteCollection routes)
      {
          routes.MapPageRoute("",
              "questions/ask/{question}",
              "~/questions/ask.aspx");
      }
      

      【讨论】:

        【解决方案4】:

        如果您的问题不是特定于 aspx 页面,您可以在任何运行 apache(和 mod_rewrite - 但几乎所有这些)的网络服务器上使用 .htaccess 文件来执行此操作。

        在本网站上查看有关.htaccess 的各种问题或查看许多在线简单教程。

        基本上你可以把一个特殊的文件.htaccess放在你希望受到影响的目录的根目录下,基本上就是说

        你可以用about_us/details代替about_us/details.php

        这是一个非常简单的例子

        RewriteEngine on 
        Options +FollowSymlinks
        
        RewriteRule ^questions/ask ../questions/ask.aspx [L]
        

        【讨论】:

          猜你喜欢
          • 2017-06-29
          • 1970-01-01
          • 2022-01-25
          • 2020-12-13
          • 1970-01-01
          • 2011-08-22
          • 1970-01-01
          • 1970-01-01
          • 2017-03-31
          相关资源
          最近更新 更多