我想删除干净网址的aspx扩展名,并在使用尾部斜杠时重定向。
在我的web.config文件中:
<!-- Rewrite, adding extension -->
<rule name="add aspx">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" negate="true" pattern="\.axd$" />
</conditions>
<action type="Rewrite" url="{R:1}.aspx" />
</rule>
<!-- Removes trailing slash after rewrite -->
<rule name="remove trailing slash after rewrite" stopProcessing="true">
<match url="(.*)/.aspx$" />
<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>
所以,基本上如果一个人请求url“mysite / mypage”,这将添加aspx扩展并正常工作,当一个人请求“mysite / mypage /”时,他们会被重定向到“mysite / mypage”。
我的解决方案似乎有效,但是只有重写而不是重定向才有更有效的方法吗?
答案 0 :(得分:0)
我没有意识到订单很重要,所以我做了以下操作:首先重定向尾部斜杠,然后进行重写。
<rule name="Remove trailing slash" stopProcessing="true">
<match url="(.*)/$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="{R:1}" />
</rule>
<rule name="Add aspx">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" negate="true" pattern="\.axd$" />
</conditions>
<action type="Rewrite" url="{R:1}.aspx" />
</rule>
这似乎是最好的方式,除非有人知道更好的方式。