Назад | Перейти на главную страницу

Ошибка перезаписи URL в веб-приложениях

Я запускаю веб-сайт ASP.NET 4.0 с использованием IIS7 в Windows Server 2008 R2.

На сайте есть несколько веб-приложений в основном домене (~ / site1, ~ / site2, ~ / site3 и т. Д.). Каждое веб-приложение является экземпляром одной и той же исходной папки веб-сайта (D: \ Websites \ MySite), поэтому вы можете получить доступ к одному и тому же веб-сайту по любому из следующих URL-адресов:

www.mydomain.com

www.mydomain.com/site1

www.mydomain.com/site2

www.mydomain.com/site3

Каждый раз возвращается один и тот же веб-сайт, но с немного разным содержанием в зависимости от того, какой конкретный URL-адрес вызван.

Все работало нормально в течение нескольких месяцев, пока меня не попросили добавить несколько оптимизаций SEO с помощью URL Rewrite. Каждое добавляемое мной правило перезаписи URL вызывает следующую ошибку:

Ошибка HTTP 500.52 - Ошибка модуля перезаписи URL. Страница не может быть отображена из-за внутренней ошибки сервера.

Ошибка конфигурации: невозможно добавить повторяющуюся запись коллекции типа «правило» с уникальным ключевым атрибутом «имя», установленным на «AddTrailingSlashRule1».

Я читал в другом месте, которое окружает configSection <system.webServer> в файле web.config с:

<location path="." inheritInChildApplications="false">

исправит эту проблему.

Однако, хотя он останавливает появление сообщения об ошибке, он также останавливает работу правил перезаписи URL в любом из веб-приложений (~ / site1, ~ / site2, ~ / site3).

Как я могу заставить модуль URL Rewrite работать с веб-приложениями?

Спасибо за любую помощь, которую вы можете предложить.

Например:

Имя html-файла www.mydomain.com как main.html

www.mydomain.com/site 1 имя файла как site 1.html ..etc

Шаг 1: win + R введите "inetsrv" без кавычек, нажмите Enter -> config -> откройте файл applicationHost.config (используйте блокнот ++)

Шаг 2: Найдите под линией (приблизительно номер строки = 218)

<defaultDocument enabled="true">
            <enter code here`files>
                <add value="Default.htm" />
                <add value="Default.asp" />
                <add value="index.htm" />
                <add value="index.html" />
                <add value="iisstart.htm" />
                <add value="default.aspx" />

            </files>
        </defaultDocument>

step3: Добавьте имя файла www.mydomain.com

пример

<add value="main.html" />

и сохранить

шаг 4: откройте IIS и перейдите на сайт 1 -> откройте документ по умолчанию -> нажмите добавить и введите имя файла сайта 1 (site1.html)

шаг 5:

Откройте файл web.config и вставьте строки

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
     <location path="site 1">
       <system.webServer>
       <defaultDocument enabled="true">
         <files>
            <clear />
              <add value="site1.html" />
         </files>
        </defaultDocument>
    </system.webServer>
    </location>
 </configuration>

-------------------------------------------------- и сохранить

Шаг 6: сайт 2 такой же, как сайт 1 (измените путь к местоположению как «сайт 2» и имя файла html)

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
     <location path="site 1">
       <system.webServer>
       <defaultDocument enabled="true">
         <files>
            <clear />
              <add value="site1.html" />
         </files>
        </defaultDocument>
    </system.webServer>
    </location>
    <location path="site 2">
       <system.webServer>
       <defaultDocument enabled="true">
         <files>
            <clear />
              <add value="site2.html" />
         </files>
        </defaultDocument>
    </system.webServer>
    </location>
  </configuration>