IIS url重写所有.asp重写为.html

时间:2010-05-07 18:40:44

标签: asp.net iis url-rewriting iis-7 web-config

我需要为web.config创建规则,该规则会将所有扩展名为.html的文件请求重写为.asp,并将所有.asp请求重定向到.html

例:
file_xyz.asp重写为file_xyz.html
directory1 / file_xyz.asp重写到directory1 / file_xyz.html

file_xyz.html重定向到file_xyz.asp
directory1 / file_xyz.html重定向到directory1 / file_xyz.asp

  1. 规则
  2. 的语法是什么
  3. 这是否过于宽泛?如果我需要有什么理由拥有物理文件,例如file_abc.html,我如何将其从重定向规则中排除?
  4. 我在想我应该只使用ISAPI_Rewrite http://www.isapirewrite.com/似乎有大量的资源可以用htaccess进行重写,而且很少有使用IIS 7 URL重写的在线帮助。任何想法和/或建议
  5. 提前致谢

    到目前为止,这是我对web.config

    的语法
    <rule name="RewriteHTMLtoASP" stopProcessing="true">
      <match url="^([^/]+)\.html$" />
      <conditions logicalGrouping="MatchAll" />
      <action type="Rewrite" url="{R:1}.asp" />
      </rule>
     <rule name="RedirectASPtoHTML" stopProcessing="true">
        <match url="^([^/]+)\.asp$" />
         <conditions logicalGrouping="MatchAll">
         <add input="{REQUEST_METHOD}" pattern="^GET$" />
         </conditions>
         <action type="Redirect" url="{R:1}.html" appendQueryString="false" />
       </rule>
    

2 个答案:

答案 0 :(得分:3)

试试这个,你应该知道$ tag是重定向/重写条件的结束并且不接受查询字符串

<rule name="RewriteHTMLtoASP" stopProcessing="true">
              <match url="(.*).html(.*)" />
              <conditions logicalGrouping="MatchAll" />
              <action type="Rewrite" url="{R:1}.asp{R:2}" />
            </rule>
            <rule name="RedirectASPtoHTML" stopProcessing="true">
              <match url="(.*).asp(.*)" />
              <conditions logicalGrouping="MatchAll">
                <add input="{REQUEST_METHOD}" pattern="^GET$" />
              </conditions>
              <action type="Redirect" url="{R:1}.html{R:2}" appendQueryString="true" />
            </rule>

答案 1 :(得分:0)

看看这篇文章: http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

您可以通过web.config设置重新编写网页。 如果您使用共享主机,我不建议使用ISAPI。

让我知道它是否适合你。

此致,Anvar