Apache mod_rewrite внутренне для другого порта - PullRequest
6 голосов
/ 16 февраля 2012

Возможно ли внутреннее перенаправление (чтобы URL-адрес не изменялся в адресной строке) с mod_rewrite на другой порт на одном хосте? Например,

http://host.com:8080 -> http://host.com:9999/myapplication/?param=val

Ответы [ 2 ]

5 голосов
/ 16 февраля 2012

1, Включить mod_proxy

LoadModule  proxy_module         modules/mod_proxy.so
LoadModule  proxy_http_module    modules/mod_proxy_http.so

2, Вы должны настроить apache для vhost:

<VirtualHost *:8080>
    ....
    ProxyPass / http://host.com:9999/myapplication/?param=val
    ProxyPassReverse / http://host.com:9999/myapplication/?param=val

</VirtualHost>

3, настроить также VHost на порт 9999

Подробнеездесь:

2 голосов
/ 10 мая 2017

Разработка решения mod_proxy с [P], флаг прокси:

  1. Включить модули mod_proxy и mod_proxy_http:

    a2enmod proxy proxy_http
    

    Если эти два параметра не включены, вы позже получите в журнале статус 300 Forbidden и сообщение об ошибке «AH00669: попытка сделать удаленный запрос от mod_rewrite без включенного прокси».

  2. Поместите следующее в раздел конфигурации Apache2 vhost для forwarding host:

    <VirtualHost *:8080>
      …
      RewriteEngine on
      RewriteCond  %{REQUEST_URI}  !^$
      RewriteCond  %{REQUEST_URI}  !^/
      RewriteRule  .*              -    [R=400,L]
    
      RewriteRule  (.*)  http://host.com:9999/myapplication/$1?param=val  [P,L]
      …
    </VirtualHost>
    

    Это включает в себя технику Стива Вебстера по предотвращению создания вредоносного URL, объясненную здесь . Не знаю, как справиться с добавлением параметра GET в этом контексте.

  3. Перезапустите Apache2:

    sudo service apache2 restart
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...