【发布时间】:2014-12-04 06:54:15
【问题描述】:
我想将“abc.aspx/”重定向到“abc.aspx”。如何做到这一点?
当请求的页面以“/”结尾时,页面会损坏。如何处理此类请求? 有没有可以在web.config文件中添加的重写规则?
【问题讨论】:
标签: asp.net webforms web-config
我想将“abc.aspx/”重定向到“abc.aspx”。如何做到这一点?
当请求的页面以“/”结尾时,页面会损坏。如何处理此类请求? 有没有可以在web.config文件中添加的重写规则?
【问题讨论】:
标签: asp.net webforms web-config
在您的 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 Development Sever 下运行您的网站,您将无法看到此功能正常工作。您需要将应用程序配置为至少在 IIS Express 下运行。
当您部署您的网站并发现此功能无法在您的生产服务器上运行时,这将是因为您错过了一些配置。常见的错误之一是将overrideModeDefault 属性设置为Deny 以用于applicationHost.config 文件中<sectionGroup name="rewrite"> 下的规则。
如果您在共享主机环境中发现此功能不起作用,请询问您的提供商是否已授予您配置此部分的权限。
【讨论】:
我知道这是一篇旧帖子,但 Mihai 的回答可能会使您的应用程序容易受到开放重定向攻击(请参阅 this)
<action type="Redirect" redirectType="Permanent" url="{R:1}" />
此重定向 URL 可用于外部重定向,因此请确保在评估此规则之前已进行其他验证,或者将重定向更改为内部重定向。如果您确实想删除尾部斜杠并将其保留在内部,则可以将其更改为:
<action type="Redirect" redirectType="Permanent" url="/{R:1}" />
干杯
【讨论】:
更多信息您也可以参考这个网址:Remove Trailing-slash
【讨论】: