Если для приложения, работающего за прокси, важно, чтобы все символы URL поступали в приложение в неизменном виде, то, к сожалению, перенаправление входящих запросов (mod_proxy), настраиваемое через Мой Zone, для этого не подходит, поскольку оно вносит некоторые изменения в URL перед передачей в приложение.
Например, часть символов кодируется в их шестнадцатеричные эквиваленты. Такие изменения претерпевают, например, символы “#“, “&” и “?” (превращаясь соответственно в “%23“, “%26” и “%3F“).
Это, в свою очередь, значительно усложняет использование таких приложений, как, например, Thumbor. Хотя в случае mod_proxy теоретически могло бы помочь ключевое слово nocanon, Мой Zone, к сожалению, не поддерживает эту возможность.
Ситуацию можно решить, заменив mod_proxy на правило Apache Rewrite.
Например, добавив блок директив Apache:
RewriteCond "%{THE_REQUEST}" "^[A-Z]+\ /([^?\ ]+)/?"
RewriteRule "^/(.*)" "http://127.0.157.196:8888/%1" [P,NE]
127.0.157.196 и 8888 необходимо заменить правильными значениями (правильный IP-адрес петли можно найти в панели управления Мой Zone в разделе Веб-хостинг и Данные сервера или, запустив в shell команду vs-loopback-ip -4)
Флаг NE (No Escape) в правиле Rewrite гарантирует, что не происходит никаких изменений в URL и параметрах, передаваемых приложению.
https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_ne
Подробное объяснение RewriteCond
RewriteCond "%{THE_REQUEST}" "^[A-Z]+\ /([^?\ ]+)/?"
Это условие, при котором правило применяется.
Здесь используется специальная переменная %{THE_REQUEST}, которая содержит исходную строку HTTP-запроса браузера, например:
GET /images/foo.jpg?size=large HTTP/1.1
Пояснение к регулярному выражению (regexp)^[A-Z]+\ /([^?\ ]+)/?:
-
^[A-Z]+— соответствует HTTP-методу (напримерGET,POST,HEADи т.д.) -
\ /— пробел + косая черта (так всегда начинается URL) -
([^?\ ]+)— захватывает все символы до первого знака вопроса?(параметры запроса) или пробела.
То есть: захватывается только «чистый путь» URL без query string. -
/?— допускает один необязательный слэш(косая черта) в конце.
Эта «захваченная» часть сохраняется как группа %1, которую можно использовать позже внутри RewriteRule.