在我的ASP.NET webform应用程序中给出以下代码;
void foo(RouteCollection routes){
routes.MapPageRoute(string.Empty, "testroute", "~/hello.aspx", false);
}
问题是,当http://localhost/testroute
路由到hello.aspx
时,http://localhost/testroute/
也会路由到hello.aspx。
有没有阻止这个?
答案 0 :(得分:1)
在我看来,最好的办法就是确保您的网站在其<a>
代码中使用一致的网址。不要担心路由机制中的无关路径,而是集中精力确保只使用链接所需的URL模式。
例如,请确保您的网站不包含<a>
个href="/testroute/"
个标记,并且它对此做出响应无关紧要。
正如我在评论中所指出的,实际上标准是URL的路径部分末尾的尾部斜杠没有效果;你可以包括它,或不包括它。这意味着两个“不同”的网址可以加载相同的网页:/page.aspx
和/page.aspx/
都会加载相同的内容。但是,这里还有另一个类似的长期传统,默认文件;也就是说,/
和/default.aspx
会倾向于加载相同的内容。
在这种情况下,解决方案与此处的解决方案相同:只需确保您的<a>
代码使用您要使用的一致的单一版本的网址。
对于记录,您可以执行一些检测尾部斜杠并发出301重定向的内容,但我认为确保您与URL保持一致会更容易。