Перезапись URL в IIS 8.5 не работает, вместо этого я получаю 404.

Вопрос или проблема

Привет, я настроил правило перезаписи на своем IIS, но, похоже, оно никогда не срабатывает. Я работал над этим в течение нескольких часов без успеха, вот мое правило:

мой URL следующий:

http://localhost:2934/trabajos/3ba2a9e4/some-cool-title

и я хочу сделать перезапись на
http://localhost:2934/snapshots/3ba2a9e4.html

это результат, который я получаю от IIS при тестировании шаблона:

тестирование URL перезаписи iis

но мне кажется, что правило никогда не срабатывает, на самом деле, я настроил трассировку неудачных запросов, как указано в этом руководстве, и я не получаю никаких ошибок или файлов в папке журналов.
например: C:\inetpub\logs\FailedReqLogFiles

Вместо этого я получаю ошибку 404, и это записано так:

2015-03-28 18:56:11 ::1 GET /trabajos/3ba2a9e4/some-cool-tile - 2934 - ::1 Mozilla/5.0+(Windows+NT+6.3;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+как+Gecko)+Chrome/42.0.2311.60+Safari/537.36 - 404 0 2 4
2015-03-28 18:56:15 ::1 GET /trabajos/3ba2a9e4/some-cool-title - 2934 - ::1 Mozilla/5.0+(Windows+NT+6.3;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+как+Gecko)+Chrome/42.0.2311.60+Safari/537.36 - 404 0 2 2

какие-нибудь идеи?

Вы можете решить эту проблему, следуя этому.
введите описание изображения здесь

Кроме того:

<system.webServer>
        <rewrite>
            <rules>
                <rule name="1" stopProcessing="true">
                    <match url="(trabajos)/(3ba2a9e4)/(some-cool-title)" />
                    <action type="Redirect" url="{HTTP-HOST}/snapshots/{R:2}.html" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>

Ответ или решение

Когда вы сталкиваетесь с проблемой неработающего переписывания URL в IIS 8.5 и получаете ошибку 404, это может быть связано с несколькими факторами. Рассмотрим пошагово, как можно диагностировать и решить эту проблему.

1. Обновление и настройки модуля URL Rewrite

Первым делом убедитесь, что у вас установлен модуль URL Rewrite. Чтобы проверить это, выполните следующие действия:

  • Откройте консоль управления IIS и выберите ваш сайт.
  • Найдите иконку «URL Rewrite». Если иконка отсутствует, установите модуль через Панель управления.

2. Правильность конфигурации правила

Судя по вашему примеру, вы хотите переписать URL с /trabajos/3ba2a9e4/some-cool-title на /snapshots/3ba2a9e4.html. Убедитесь, что ваше правило прописано корректно. Ваше текущее правило:

<system.webServer>
    <rewrite>
        <rules>
            <rule name="1" stopProcessing="true">
                <match url="(trabajos)/(3ba2a9e4)/(some-cool-title)" />
                <action type="Redirect" url="{HTTP-HOST}/snapshots/{R:2}.html" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

Однако, существует более корректная версия, которая может решить вашу проблему:

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Rewrite to Snapshot" stopProcessing="true">
                <match url="^trabajos/([^/]+)/.*" />
                <action type="Rewrite" url="/snapshots/{R:1}.html" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

Обратите внимание, что здесь используется регулярное выражение ^trabajos/([^/]+)/.*, что позволяет захватывать любые символы после threeba2a9e4.

3. Включение журналов для отладки

Чтобы выявить, с чем именно связана проблема, включите трассировку неудачных запросов, как упоминалось в вашем сообщении. Это поможет вам увидеть, почему правило не срабатывает. Включение трассировки можно сделать так:

  1. Откройте консоль IIS и выберите ваш сайт.
  2. Включите "Неудачные запросы" в разделе "Управление".
  3. Убедитесь, что путь к логам правильный: C:\inetpub\logs\FailedReqLogFiles.

4. Проверка порядка правил

Проверьте, не перекрывает ли другое правило ваше новое правило. Порядок правил имеет значение, и если другое правило обрабатывает запрос ранее, ваше правило не будет выполнено.

5. Проверка конфигурации путей

Убедитесь, что в конфигурации сайта правильно прописаны пути к статическим и динамическим ресурсам. Если веб-приложение использует другие настройки, такие как обработка URL через другой модуль или инструменты, это также может повлиять на работу правила.

6. Очистка кеша

Иногда изменения могут не применяться из-за кеширования. Попробуйте перезапустить IIS:

iisreset

Заключение

Если после выполнения всех вышеуказанных действий проблема не решена, рекомендуется проверить настройки приложения и другие модули, которые могут конфликтовать с переписыванием URL. Тщательная проверка каждого из этапов, начиная с установки модуля и заканчивая проверкой логов, поможет найти и устранить проблемы, связанные с ошибками 404 при переписывании URL в IIS 8.5.

Оцените материал
Добавить комментарий

Капча загружается...