如何重写url以删除aspx扩展并重定向尾部斜杠?

时间:2014-03-11 19:14:25

标签: asp.net iis redirect url-rewriting seo

我想删除干净网址的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”。

我的解决方案似乎有效,但是只有重写而不是重定向才有更有效的方法吗?

1 个答案:

答案 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>

这似乎是最好的方式,除非有人知道更好的方式。