Я пытаюсь переписать часть URL (https://myfirstdomain.com/lool/https:/alf.mydomain.com/service/wopi/files/uuid?query_params
) до того, как произойдет проксирование, и у меня есть этот соответствующий раздел в моем виртуальном хосте SSL по умолчанию:
<IfModule mod_rewrite.c>
RewriteEngine On
LogLevel debug rewrite:trace3
RewriteRule ^lool/https:/alf.mydomain.com\/(.*) lool/https://alf.mydomain.com/$1 [QSA,NE]
</IfModule>
ProxyPass / https://localhost:2323/
ProxyPassReverse / https://localhost:2323/
и я вижу это в журналах перезаписи:
applying pattern '^lool/https:/alf.mydomain.com' to uri '/lool/https:/alf.mydomain.com/service/wopi/files/uuid
но в службе, которая получает это, я вижу, что URL-адрес не был переписан. Буду признателен за любые подсказки относительно того, что я делаю неправильно. Я по сути пытаюсь добавить лишнее /
который был удален прокси-сервером где-то в инфраструктуре, к которой у меня нет доступа.
РЕДАКТИРОВАТЬ: в журналах серверной службы WOPI он видит URL-адрес запроса неизмененным:
Request from 127.0.0.1:42035: GET /lool/https:/alf.mydomain.com/service/wopi/files/uuid
RewriteRule ^lool/https:/alf.mydomain.com\/(.*) lool/https://alf.mydomain.com/$1 [QSA,NE]
При использовании в виртуальный хост контекст, RewriteRule
шаблон соответствует полному URL-пути, включая префикс косой черты (удаляется только в каталог контекст).
Вместо этого попробуйте что-нибудь вроде следующего:
RewriteRule ^/lool/https:/(alf\.mydomain\.com/.*) /lool/https://$1 [PT,NE]
Префикс косой черты также требуется на замена при использовании в контексте виртуального хоста, чтобы указать относительный URL-путь корня документа.
Я только что расширил захваченный шаблон, включив имя хоста, чтобы сохранить повторение в замена.
Буквальные точки следует избегать в RewriteRule
шаблон. В то время как слэши (/
) не нужно экранировать.
В QSA
здесь не нужен, так как вы не указываете строку запроса в замена.
Вы можете или не можете нуждаться в PT
(passthrough
), чтобы его подхватил mod_proxy.
Вам также следует удалить <IfModule mod_rewrite.c>
оболочка - если это не предназначено для работы без mod_rewrite? В противном случае вы просто замаскируете ошибки, когда mod_rewrite недоступен.