1

给定以下代码,在我的 ASP.NET 网络表单应用程序中;

void foo(RouteCollection routes){
   routes.MapPageRoute(string.Empty, "testroute", "~/hello.aspx", false);
}

问题是,虽然http://localhost/testroute路由到hello.aspx,但http://localhost/testroute/也路由到 hello.aspx。

有没有办法防止这种情况发生?

4

1 回答 1

1

在我看来,最好的办法就是确保您的网站在其<a>标签中使用一致的 URL。不要担心进入你的路由机制的无关路径,而是专注于确保只为你的链接使用所需的 URL 模式。

例如,确保您的网站不包含任何<a>带有 的标签href="/testroute/",并且响应它并不重要。

正如我在评论中指出的那样,URL 路径部分末尾的斜杠实际上是标准的,它没有效果。你可以包含它,也可以不包含它。这意味着两个“不同”的 URL 可以加载相同的页面:/page.aspx并且/page.aspx/都加载相同的内容。但是这里还有另一个类似的长期传统,即默认文档。也就是说,/并且/default.aspx会倾向于加载相同的东西。

当然,这种情况下的解决方案与此处的解决方案相同:只需确保您的<a>标签使用一致的、单一版本的 URL 即可。


作为记录,您可以执行一些检测尾部斜杠并发出 301 重定向的操作,但我认为确保您与 URL 一致会容易得多。

于 2012-11-29T12:03:27.240 回答