【问题标题】:How to display URL in lower case?如何以小写形式显示网址?
【发布时间】:2011-10-24 00:12:02
【问题描述】:

我有一个 webforms 项目,其中大写 URL 被返回给客户端:

http://www.looknbook.com/Packages/Forms/package_search.aspx

要求以小写形式显示 URL:

http://www.looknbook.com/packages/forms/package_search.aspx

如何在 ASP.NET Webforms 中以小写形式将 URL 发送到客户端浏览器?

【问题讨论】:

    标签: c# asp.net iis url-rewriting webforms


    【解决方案1】:

    对于 IIS7,可以使用 URI Rewrite 并使用示例here

    <rule name="Convert to lowercase" stopProcessing="true">  
        <match url=".*[A-Z].*" ignoreCase="false" />  
        <action type="Redirect" url="{ToLower:{R:0}}" redirectType="Permanent" />
    </rule>
    

    【讨论】:

    • 这几乎对我有用,但它忽略了任何查询字符串的大小写。查询字符串名称值对是否也可以小写?
    【解决方案2】:

    经典的 ASP .NET 路径对应于文件夹名称,在 Windows 中文件夹不区分大小写。
    因此,小写和大写的 URL 都可以用来访问您的网站。

    您在地址栏中看到大写 URL 的唯一原因是链接将其大写。将网站上的所有链接更改为小写,就是这样。

    如果您还想强制小写(即即使用户输入了大写的 URL,也更改为小写),您需要进行 URL 重写,但具体的解决方案取决于您的 IIS 版本'正在使用。

    【讨论】:

      【解决方案3】:

      如果您想从代码站点实现小写 URL,我们可以通过在 global.cs 页面的 Application_BeginRequest 或 Application_EndRequest 中实现以下代码来实现

                  var curenturl = Request.Url.ToString();           
                  if (Regex.IsMatch(curenturl, @"[A-Z]"))
                  {
                      Response.Clear();
                      Response.Status = "301 Moved Permanently";
                      Response.StatusCode = 301;
                      Response.AddHeader("Location", curenturl.ToLower());
                      Response.End();
                  }
      

      【讨论】:

        猜你喜欢
        • 2021-10-31
        • 2018-10-19
        • 2012-11-14
        • 2021-09-05
        • 2012-04-06
        • 2020-07-07
        • 2016-12-16
        • 2023-01-20
        • 2016-05-25
        相关资源
        最近更新 更多