IIS 7 url重写规则,用于删除目录和扩展,并且仅特定于一个目录

时间:2016-03-22 14:17:26

标签: asp.net mod-rewrite iis url-rewriting

我的网站有多个目录。所有aspx页面都在“SitePages”目录中。 例, http://example.com/Sitepages/page1.aspx

http://example.com/Sitepages/pagexyz.aspx

我需要一个url-rewrite规则来删除目录和扩展名,如: http://example.com/Sitepages/page1.aspx变为http://example.com/page1

如果网站位于https或域名前面有www,则规则不应更改。

规则还应该更改用户输入的这些友好网址的绝对网址。

实施例, 如果用户输入http://example.com/Sitepages/page1.aspx,则浏览器应显示http://example.com/page1

所以我想我需要两个规则。

此规则也应仅适用于“Sitepages”目录。

规则不应区分大小写。

我尝试了一些规则,但它们无法正常工作。 我试过这些:

<rule name="RewriteUserFriendlyURLS" enabled="true" stopProcessing="true">
<match url="^([a-zA-Z0-9_-]+)$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="sitepages/{R:1}.aspx" />
</rule>

还试过这个:

<rule name="Redirect requests to friendly URLs">
<match url="^(.*?)/(.*)\.aspx$" />
<action type="Redirect" url="{R:2}" />
</rule>
<rule name="Rewrite friendly URLs to phsyical paths">
<match url="^(.*)$" />
<action type="Rewrite" url="sitepages/{R:0}.aspx" />
</rule>

请帮忙。

1 个答案:

答案 0 :(得分:0)

要将用户重定向到友好网址,您需要遵守规则:

<rule name="Test" stopProcessing="true">
   <match url="^.*Sitepages.*\/(.*).aspx$" />
   <action type="Redirect" url="{R:1}" />
</rule>

要处理友好网址,您需要遵守规则:

<rule name="Test2">
   <match url="^.*Sitepages.*$" />
   <conditions logicalGrouping="MatchAll">
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
   </conditions>
   <action type="Rewrite" url="{R:0}.aspx" />
</rule>