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

apache mod_substitute работает в curl, но не в браузере

У меня есть mod_substitute, как показано ниже, который отлично работает в curl, но не в браузере. Кроме того, он работает на всех страницах, кроме одной.

Я хотел бы знать, из-за чего mod_substitute не работает в браузере? как отладить и исправить эту проблему?

Чтобы устранить такие проблемы, рекомендуется сравнить заголовки в браузере с заголовками в curl (-i, --include flag покажет заголовки, а -H flag может добавить их), а в браузере добавляйте по одному в команду curl, пока проблема не воспроизведется.

Я читаю в раздел комментариев на странице документации mod_substitute который описывает симптомы, подобные описанным вами, с mod_substitute иногда не работает должным образом:

Оказалось, это порядок нашей цепочки фильтров. DEFLATE выполнялся до SUBSTITUTE. Для небольших файлов DEFLATE ничего не делал, поэтому работал. На некоторых внутренних прокси-серверах, которые не отправляли заголовок Accept-Encoding, он работал. Но в других случаях этого не происходило. В конце концов, это сработало лучше всего:

AddOutputFilterByType INFLATE;SUBSTITUTE;DEFLATE text/html text/plain text/xml

Другой вариант - отключить заголовок Accept-Encoding для целевого ресурса, где mod_substitute предполагается делать это замены.

RequestHeader unset Accept-Encoding

Вместо этого (возможно) лучше использовать другой прием, чтобы вы могли воспользоваться преимуществами обоих mod_deflate и mod_substitute хотя.

Отключение сжатия gzip решает проблему. Добавьте следующие строки в httpd.conf SetEnv no-gzip 1 решает проблему