从URL中删除尾随斜杠

时间:2014-12-04 06:54:16

标签: asp.net webforms web-config

我想将“abc.aspx /”重定向到“abc.aspx”。怎么办呢?

当请求的页面以'/'结尾时,页面会被破坏。如何处理此类请求? 是否有可以添加到web.config文件中的重写规则?

3 个答案:

答案 0 :(得分:12)

在您的web.config中,在system.webServer下添加

<rewrite>
  <rules>

    <!--To always remove trailing slash from the URL-->
    <rule name="Remove trailing slash" stopProcessing="true">
      <match url="(.*)/$" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Redirect" redirectType="Permanent" url="{R:1}" />
    </rule>

  </rules>
</rewrite>

一些问题

在您的开发环境中,如果您在Visual Studio开发服务器下运行您的网站,您将无法看到此功能正常工作。您需要将应用程序配置为至少在IIS Express下运行。

当您部署网站并发现此功能在生产服务器上不起作用时,这将是因为您错过了配置的内容。常见错误之一是将overrideModeDefault属性设置为Deny,用于 applicationHost.config 文件中<sectionGroup name="rewrite">下的规则。

如果您在共享托管环境中并且发现此功能无效,请询问您的提供商是否已授予您配置此部件的权限。

来源:http://www.tugberkugurlu.com/archive/remove-trailing-slash-from-the-urls-of-your-asp-net-web-site-with-iis-7-url-rewrite-module

答案 1 :(得分:2)

我知道这是一篇过时的文章,但Mihai的回答可能会使您的应用容易受到公开重定向攻击

<action type="Redirect" redirectType="Permanent" url="{R:1}" />

此重定向URL可以用于外部重定向,因此在评估此规则之前,请确保已进行其他验证,或者将重定向更改为内部重定向。如果您确实要删除斜杠并将其保留在内部,则可以将其更改为:

<action type="Redirect" redirectType="Permanent" url="/{R:1}" />

欢呼

答案 2 :(得分:1)

有关详细信息,您还可以参考以下网址:Remove Trailing-slash