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

Apache: выполнение сопоставления с образцом и группировка с помощью RewriteRule приводит к локальному пути вместо получения компонента URL

Я искал, если на это уже ответили, без радости.

Я бы хотел использовать RewriteRuleсопоставление с образцом для получения запрошенного пути и перенаправления клиента в другое место, сохраняя путь в результирующем перенаправлении.

Я думал, что что-то вроде этого поможет:

RewriteRule.  ^(.*)$ http://testserver/test/$1

Если пользователь запрашивает foo, отправь его test/foo (не беспокойтесь о зацикливании, я положил несколько RewriteCond логика, чтобы предотвратить это).

К моему удивлению, в Apache получается что-то вроде http://testserver/foo/var/www/html. Он сделал следующее:

/bar   /var/www/html/bar

Я поднял уровень журнала mod_rewrite и обнаружил, что он соответствует, но Apache расширялся, соответствуя локальному пути /, который /var/www/html и использовать это для перенаправления браузера, что не сработает.

Я пробовал использовать [PT] который, как я думал, предотвратит расширение, но этого не произошло.

Есть идеи, как я могу предотвратить это? Любая помощь будет оценена.

Отвечая на @MrWhite, прилагаю соответствующие <if> блок:

<If "env('var1') =='1' && env('var2') =='0' && env('var3') =='1'"  >
           Define                  requestUri              $1
           Define                  backend              $customDomain
           RewriteEngine           on
           RewriteCond             %{REQUEST_URI}          !^/redir/.*$
           RewriteRule             ^(.*)$                  /redir/%{REQUEST_URI}
</If>           

Этот блок находится под <Location> блок, который в свою очередь находится под основным <VirtualHost> блок.

Если я вынесу его из <If> блок, узор ^(.*)$ дает нам то же самое %{REQUEST_URI} вернется. Внутри <If> блок, он расширяется до локальной файловой системы + запрошенного ресурса (если я запрашиваю /index.html он расширяется до /var/www/html/index.html.

Неважно о тех Определить в блоке они ничего не делают и не действуют.

Спасибо