Windows Server Web.config Strip Индекс Имя файла - PullRequest
0 голосов
/ 17 ноября 2010

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

Например: перенаправление www.example.com/index.html на www.example.com

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

Edit:

Вот мой обновленный файл конфигурации. Но теперь это вызывает ошибку 500.

См. Ответ CodingGorilla ниже:)

1 Ответ

2 голосов
/ 18 ноября 2010

Чтобы избавиться от index.html после перенаправления, сбросьте {R:1}. Но тогда вам нужно будет изменить это правило так, чтобы оно вызывало только для запросов /index.html и создавало новое правило, которое срабатывает на других страницах, включая {R:1}, чтобы запрашивать example.com/ mypage.html по-прежнему будет перенаправлен правильно.

Edit:

Редактировать # 2

И окончательный ответ!

Основываясь на нашей беседе в чате, я думаю, что это последний набор правил:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true" />
        <rewrite>
            <rules>
                <rule name="CanonicalHostNameRule1" stopProcessing="true">
                    <match url="index\.htm(?: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>
...