使用URL重写器的最佳做法

时间:2016-08-16 19:46:44

标签: asp.net iis url-rewriting

我有一个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名称。

1 个答案:

答案 0 :(得分:0)

第一个问题

在我的想法中,在代码中定义routes表更加容易和灵活。您可以在Application_Start Global.asax中定义路线。还包括名称空间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为'/'的链接都会在默认文档上重写您的路线,而不会在显示的网址中显示home.html

此致