Intelligencia UrlRewriter强制使用小写URL

时间:2012-05-02 09:44:21

标签: c# asp.net .net-3.5 url-rewriting

在重写时强制小写网址的最佳方法是什么?

  • 的Global.asax?
  • 的web.config?

一切都失败了......我做错了什么?请参阅以下内容:

Global.asax中

我不知道使用哪种方法?

void Application_BeginRequest(object sender, EventArgs e)
    {
        HttpContext context = HttpContext.Current;
        string path = Request.Path.ToLower();

        context.RewritePath(path);
    }

的web.config

我尝试过使用web.config方法但无法管理:

<rewrite url="(.*)$" to="$1" permanent="true" />

如何更改上面的代码,以便自动强制网址小写?

3 个答案:

答案 0 :(得分:2)

您是否尝试过IIS的URL重写模块?

http://www.iis.net/download/urlrewrite

小写有一个特殊的规则: enter image description here

答案 1 :(得分:1)

我们无法强迫your user编写小写网址。生成的所有网址you都可以是小写的。如果您在网址中获得大写,则可以将用户重定向到小写版本。

void Application_BeginRequest(object sender, EventArgs e)
{
    string path = Request.Path;
    if (ContainsUpperChars(path))
    {
        HttpContext.Current.Response.Redirect(Request.Path.ToLower());
    }
}

bool ContainsUpperChars(string str) { some code to test for uppercase chars }

答案 2 :(得分:1)

在web.config中使用url rewrite标记。 如果vs2012无法识别该标记,请运行此页面上的脚本: http://blog.vanmeeuwen-online.nl/2013/04/visual-studio-2012-xml-intellisense-for.html 这是我用来解决问题的另外两个链接。 ScottGu'sBlogMeligy's Blog

<system.webServer>                                               
<rewrite>
            <rules>
                <rule name="LowerCaseRule" stopProcessing="true">
                    <match url="[A-Z]" ignoreCase="false" />
                    <action type="Redirect" url="{ToLower:{URL}}" />
                </rule>
            </rules>
        </rewrite>
</system.webServer>