Jas*_*ung 16 asp.net-mvc asp.net-mvc-routing
在最新的MVC预览中,我使用此路由获取旧版URL:
routes.MapRoute(
"Legacy-Firefox", // Route name
"Firefox-Extension/", // URL with parameters
new { controller = "Home", action = "Firefox", id = "" } // Parameter defaults
);
Run Code Online (Sandbox Code Playgroud)
问题是这两个URL都有效:http : //example.com/Firefox-Extension http://example.com/Firefox-Extension/
我只希望第二个工作(对于SEO).此外,当我创建指向该页面的链接时,路由引擎会返回一个没有尾部斜杠的URL.
这是我用来生成链接的代码:
<%= Html.ActionLink("Firefox Extension", "Firefox", "Home")%>
Run Code Online (Sandbox Code Playgroud)
我相信可以通过使用HTTP处理程序来执行301重定向到具有尾部斜杠的URL来解决第一个问题.但是,我想链接到带有斜杠的URL,我希望不必使用斜杠对该版本进行硬编码.
有谁知道如何强制路线使用尾部斜线?
当您编写链接时,应始终包含最后的斜杠。我不知道这是否适用于 mvc 框架(或一般的 URL 路由),但我知道对于静态资源,如果不添加斜杠,则会在请求完成两次时增加一点开销。
斜杠立即将 url 标识为指向目录。无需解析文件。
再说一次,我不认为这在您使用 URL 路由时适用,但我还没有研究过它。
在此处查看有关尾部斜杠的文章
编辑:考虑到这一点......我认为最好不要包含斜杠,而不是尝试包含它。当您使用 url 路由时,您将使用 URL 直接路由到资源。与指向具有index.html 或default.aspx 的目录相反,您指向的是特定文件。
我知道差异很微妙,但最好坚持路由 URL 的非斜杠,而不是与框架对抗。
当您实际指向目录时,请严格使用尾部斜杠。我想如果你真的不喜欢的话,你可以每次在末尾添加一个斜杠。
归档时间: |
|
查看次数: |
16796 次 |
最近记录: |