Как правильно настроить Rewrite Apache (перенаправление на Apache)

Рейтинг: 0Ответов: 1Опубликовано: 03.03.2025

У меня есть Apache v2.4.37 на хосте 10.10.10.10, на Oracle Linux 8, который имеет такой файл конфигурации httpd.conf:

<VirtualHost *:80>
    ServerName site.ru (http://site.ru/)
    Redirect / https://site.ru/
</VirtualHost>
 
<VirtualHost *:443>
    Include "conf/maintenance.rewrite"
    ServerName site.ru (http://site.ru/)
    RewriteEngine On
    DocumentRoot /var/www/html
....
  <Location /test>
       Allow from all
       ProxyPass http://10.11.10.11:4000
       ProxyPassReverse http://10.11.10.11:4000
       RewriteEngine On
       RewriteRule ^/test/(.*) http://10.11.10.11:4000/$1 [P]
  </Location>

Когда я открываю страницу https://site.ru/test, я попадаю на нужный мне сервис http://10.11.10.11:4000, но при этом вижу, что кнопка на странице сервиса ведёт на https://site.ru/button. А должна на http://10.11.10.11:4000/button , либо https://site.ru/test/button(что в моём понимании = http://10.11.10.11:4000/button). Как мне сделать правильный Rewrite, чтобы всё что после https://site.ru/test/... - обрабатывалось сервисом http://10.11.10.11:4000 ?

Я так же пробовал такой RewriteRule ^/test/(.*) http://10.11.10.11:4000/test$1 [P,L], но тогда я получаю 404 Not Found при обращении к https://site.ru/test. Так же пробовал добавлять:

ProxyPassReverseCookieDomain 10.11.10.11 site.ru
ProxyPassReverseCookiePath / /

и, к сожалению, это тоже не работает. Помогите, пожалуйста

Ответы

▲ 0

Тут по идее и рерайт не нужен. Попробуйте вот так:

<VirtualHost *:80>
    ServerName site.ru
    Redirect / https://site.ru/
</VirtualHost>

<VirtualHost *:443>
    Include "conf/maintenance.rewrite"
    ServerName site.ru
    DocumentRoot /var/www/html

    <Location /test>
        Require all granted
        ProxyPass http://10.11.10.11:4000/
        ProxyPassReverse http://10.11.10.11:4000/
        ProxyPassReverseCookieDomain 10.11.10.11 site.ru
        ProxyPassReverseCookiePath / /test/

        # Дополнительно, если нужно исправлять URL в HTML/JS
        ProxyHTMLEnable On
        ProxyHTMLURLMap http://10.11.10.11:4000 /test
        ProxyHTMLURLMap / /test/
        RequestHeader unset Accept-Encoding
    </Location>
</VirtualHost>