web.config索引重定向

时间:2011-04-04 23:02:19

标签: asp.net url-rewriting web-config url-rewrite-module

我为Windows服务器上托管的项目使用标准的web.config文件。它负责2项任务。

  1. 它将网站的非www版本重定向到www版本。
  2. 它将索引文件重定向到根目录。
  3. 见下文:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
         <modules runAllManagedModulesForAllRequests="true" />
            <rewrite>
                <rules>
                    <rule name="CanonicalHostNameRule1" stopProcessing="true">
                        <match url="index\.asp(?:l)?" />
                            <conditions>
                                <add input="{HTTP_HOST}" pattern="example\.com$" />
                            </conditions>
                            <action type="Redirect" url="http://www.example.com/" />
                    </rule>
                    <rule name="CanonicalHostNameRule2" stopProcessing="true">
                        <match url="(.*)" />
                        <conditions>
                            <add input="{HTTP_HOST}" pattern="^example\.com$" />
                        </conditions>
                        <action type="Redirect" url="http://www.example.com/{R:1}" />
                    </rule>
                </rules>
            </rewrite>
      </system.webServer>
    </configuration>
    

    这很有效,除了1个问题。索引重定向将所有子目录重定向到main,index。

    例如:

    http://www.example.com/index.asp正在重定向到http://www.example.com

    但是,http://www.example.com/about/index.asp也会重定向到http://www.example.com。我希望它重定向到http://www.example.com/about/

    非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

好吧,在这里没有回复之后,我在各种.Net论坛上发帖,最后得到了答案。这条规则将解决它:

<rule name="redirect index.asp" stopProcessing="true">
    <match url="^(\w*/)?index\.asp" />
       <conditions>
         <add input="{HTTP_HOST}" pattern="domain\.com$" />
       </conditions>
     <action type="Redirect" url="http://www.domain.com/{R:1}" />
</rule>