URL Rewrite Исходящие правила IIS7
Экспериментируя с переписыванием URL-адресов с помощью этого модуля, я получаю следующую ошибку при попытке попасть в URL-адрес. Посмотрел онлайн ответы, но не уверен, что лучший способ обойти это... любые идеи?
Ошибка HTTP 500.52 - Ошибка модуля перезаписи URL-адреса. Исходящие правила перезаписи не могут применяться, когда содержимое HTTP-запрос кодируется ( "gzip" ). **
IIS получил запрос; однако во время обработки запроса произошла внутренняя ошибка. Основная причина этой ошибки зависит от того, какой модуль обрабатывает запрос и что происходит в рабочем процессе, когда произошла эта ошибка.
IIS не смог получить доступ к файлу web.config для веб-сайта или приложения. Это может произойти, если разрешения NTFS установлены неверно.
IIS не смог обработать конфигурацию для веб-сайта или приложения.
У аутентифицированного пользователя нет разрешения на использование этой DLL.
Запрос сопоставляется с управляемым обработчиком, но функция расширения .NET не установлена.
Ответы
Ответ 1
Я пробовал комментарии aracntido, но, похоже, он не работает в IIS7. Он отлично работает на серверах с IIS7.5, поэтому я не уверен, есть ли работа.
Исправление состоит в том, чтобы использовать это в файле web.config:
<system.webServer>
<urlCompression doStaticCompression="false" doDynamicCompression="false" dynamicCompressionBeforeCache="false" />
</system.webServer>
Ответ 2
Это по дизайну, это означает, что HTML уже был заархивирован, когда он стал доступен для модуля URL Rewrite, поэтому он не мог переписать его, потому что он должен был сначала разархивировать его, переписать его, а затем снова заново заново и это слишком большая мощность процессора. Если это динамический контент, попробуйте переписать его перед сжатием.
Переместить модуль динамической компрессии после URL-адреса переписать модуль в "Модулях" на уровне сервера (InetMgr). Отключите "переписанный журналом URL" для правила (по умолчанию), иначе модуль попытается быть последним в конвейере.
Статическое сжатие несовместимо с исходящей переписыванием.
Ответ 3
Хотя отключение статического и динамического сжатия работает хорошо, этот метод не работает с файлами *.axd
. Эти файлы являются ресурсами клиентской стороны, такими как js, Ajax и т.д.
Подробнее о файлах axd ЗДЕСЬ.
Потому что эти файлы сжимаются автоматически. Подробнее читайте ЗДЕСЬ.
Так проще, чтобы заставить их работать, это отправить запрос с установкой заголовка Accept-Encoding
на пустой! Это возможно двумя способами:
- [BAD] изменение настроек firefox КАК?
- [NICE] настройка входящего правила для очистки
Accept-Encoding
в заголовке! КАК?
Ответ 4
Отключение статического сжатия (ненужное для моей ситуации) в IIS 7.0 устраняет аналогичную проблему, когда URL-адреса будут загружаться, но обновление страницы приведет к базовой ошибке 500.
Я добавил index.html в URL-адрес, и это уточняло ошибку "Ошибка HTTP 500.52 - Ошибка URL-адреса перезаписи URL-адреса". Исходные правила перезаписи не могут применяться при кодировании содержимого HTTP-ответа ( "gzip" ).
Благодаря aracntido, указав это, вы помогли мне решить проблему.