我想将“abc.aspx /”重定向到“abc.aspx”。怎么办呢?
当请求的页面以'/'结尾时,页面会被破坏。如何处理此类请求? 是否有可以添加到web.config文件中的重写规则?
答案 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">
下的规则。
如果您在共享托管环境中并且发现此功能无效,请询问您的提供商是否已授予您配置此部件的权限。
答案 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