我在web.config中使用以下规则来删除" .aspx"来自网址
<rule name="RemoveASPX" enabled="true" stopProcessing="true">
<match url="(.*)\.aspx" />
<action type="Redirect" url="{R:1}" />
</rule>
<rule name="AddASPX" enabled="true">
<match url=".*" negate="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{URL}" pattern="(.*)\.(.*)" negate="true" />
</conditions>
<action type="Rewrite" url="{R:0}.aspx" />
</rule>
页面方法工作正常,但在添加此规则web.config后,它们停止工作。如果我从web.config中删除它,他们就开始工作了。任何人都可以解释为什么会这样。我用谷歌搜索但没有得到任何线索。
答案 0 :(得分:0)
这是因为规则AddASPX
正在向所有传入的网址添加.aspx
,但是那些直接引用文件或指向的网址,或者是一个点。
如果您的网页mehtod网址看起来像path\page.aspx\methodname
,则不会修改它们,因为其中有.
(点)。但是,如果您的网址如下所示:path\page\methodname
,则会将其重写为path\page\methodname.aspx
,这就是他们停止工作的原因。
您必须确定适用于此情况的模式,并实现忽略它的条件。您需要确定失败的URL的外观。您可以使用fiddler或浏览器控制台(按F12打开它)查看请求的网址。