【问题标题】:ASP.NET MVC 3 and URL rewriteASP.NET MVC 3 和 URL 重写
【发布时间】:2011-12-22 14:53:07
【问题描述】:

我想将 URL 小写并在其末尾添加一个斜杠。 例如

mydomain.com/About -> mydomain.com/about/
mydomain.com/about -> mydomain.com/about

这是因为 Google Analytics(分析)将所有这些 URL 视为完全不同的。
我在 web.config 中有以下重写规则:

<rewrite>
    <rules>
        <rule name="Redirect mydomain.com to www" patternSyntax="Wildcard" stopProcessing="true">
            <match url="*" />
            <conditions>
                <add input="{HTTP_HOST}" pattern="mydomain.com" />
            </conditions>
            <action type="Redirect" url="http://www.mydomain.com/{R:0}" />
        </rule>
    </rules>
</rewrite>

任何帮助将不胜感激!

【问题讨论】:

  • 我不记得有什么语法,但我想指出,在 MVC3 中,如果您使用 Url.Action 或 Url.Route 方法,它们将不会创建 URL处理大小写/斜线的东西,所以每次链接点击都会导致重定向,这不好。我过去解决这个问题的方法是实际编写一个自定义路由实现,使我所有的路由 url 的 seo 友好,如果不是,可以 301。
  • 如果某些内容会出现 404,这些重定向也会导致误报,因为它们会在第一个请求上响应 301,然后在第二个请求上响应 404,从而对您的服务器造成不必要的请求。

标签: asp.net-mvc-3 url-rewriting web-config


【解决方案1】:

您可以使用以下博客文章中的代码强制小写路由:Force MVC Route URL to Lowercase。

如果需要尾部斜杠,您可以通过添加第二个类来修改代码,例如,LowerCaseRouteWithTrailingSlash,并更改代码以检查尾部斜杠,如果需要,添加一个。

【讨论】:

    猜你喜欢
    • 2011-08-24
    • 1970-01-01
    • 2012-07-03
    • 2011-12-23
    • 2023-03-15
    • 2011-02-08
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多