Переадресация индекса web.config - PullRequest
1 голос
/ 05 апреля 2011

Я использую стандартный файл web.config для своих проектов, размещенных на серверах Windows. Он берет на себя 2 задания.

  1. Перенаправляет версию сайта без www на версию www.
  2. Перенаправляет индексный файл в корень.

См. Ниже:

<?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 проблемы. Перенаправление индекса перенаправляет все подкаталоги на основной индекс.

Например:

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 Ответ

4 голосов
/ 07 апреля 2011

Что ж, после того как я не получил ответа, я разместил сообщения на различных форумах .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>
...