【问题标题】:Best practices in using URL Rewriter使用 URL 重写器的最佳实践
【发布时间】:2016-08-16 19:46:43
【问题描述】:

我有一个 ASP.NET Web 应用程序,并且在 IIS 中使用 URL 重写器。我想让 URL 简单而有意义,所以我在 IIS 中为每个页面创建了一个规则,如下所示:

  • MySite/Admin/AddEditStudent.aspx 将是“MySite/Student/New”
  • MySite/Admin/AddEditStudent.aspx?ID={Number} 将是“MySite/Student/{Number}”
  • MySite/Admin/Students.aspx 将是“MySite/Students”
  • MySite/Admin/AddEditBook.aspx 将是“MySite/Book/New”
  • MySite/Admin/AddEditBook.aspx?ID={Number} 将是“MySite/Book/{Number}”
  • MySite/Admin/Books.aspx 将是“MySite/Books”
  • ....
  • ....
  • ....
  • 等等

我有很多页面,我担心我可能会用错了,尽管上面的工作正常。我认为可能有一种方法可以以一般方式使用更少的规则。

我的第二个问题是关于主页的。目前是这样的:

  • MySite/Public/Home.aspx 将是“MySite/Home”

但是,我希望它只是“MySite”而不需要添加“/Home”部分。这种方式可以吗?

提前致谢,

PS:“MySite”是我在主机文件中创建的 localhost 的替代品,但是当我在生产环境中部署应用程序时,它将是 DNS 名称。

【问题讨论】:

    标签: asp.net iis url-rewriting


    【解决方案1】:

    第一个问题

    在我的想法中,在代码中定义路由表更加容易和灵活。您可以在Global.asaxApplication_Start 中定义路由。还包括命名空间System.Web.Routing

    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        RouteTable.Routes.MapPageRoute("StoreRoute",
        "BookStore/{Name}",
        "~/Webpages/BookStore/ViewBookDemo.aspx");
    }  
    

    所以你的web.config 会更干净,更容易设置其他配置。

    第二个问题

    首先在默认页面的 web.config 中设置默认文档,如下所示:

    <configuration>
       <system.webServer>
          <defaultDocument enabled="true">
             <files>
                <add value="home.html" />
             </files>
          </defaultDocument>
       </system.webServer>
    </configuration>
    

    现在每个 href 为 '/' 的链接都会在默认文档上重写您的路由,而不会在显示的 url 中显示 home.html

    问候

    【讨论】:

    • 谢谢拉敏。对于第一个问题,我同意你的观点,编码更容易,但我还需要为每一页都做吗?还是有一个通用的东西?对于第二个问题,主页位于名为“Public”的文件夹中,而不是根目录,因此如果我设置默认文档,用户将不得不以这种方式请求它:“MySite/Public”,我只想要“MySite”
    • 不客气,兄弟,我的例子很笼统,但如果我想给你确切的配置,你应该将默认文档设置为“MySite/Public/Home.aspx”。因此,您的默认路由将是您的域并作为“/”工作。
    • 谢谢。我从来不知道我可以在默认文档中添加完整路径
    猜你喜欢
    • 2010-12-15
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    相关资源
    最近更新 更多