Как я передаю запросы к другому URL, на самом деле не изменяя URL в Apache?

У меня есть Apache, работающий в домене, например http://example.com. У меня также есть Tomcat, работающий на моем сервере, и я передал все запросы, выполненные к http://example.com/t/ к Tomcat и всем другим URL подаются Apache непосредственно.

Моя проблема, у меня есть URL как http://example.com/bar, но это должно на самом деле указать на http://example.com/t/bar.

Другими словами, URL должен быть обработан Tomcat, который получает контекст приложения "панель".

Проблема, я не совсем уверен, как заставить надлежащее переписать правило для этого. Я пытался добавить это к sites-available/default

RewriteEngine on
RewriteRule ^/bar(.*) /t/bar$1 [R]

Но это не сохраняет URL и вместо этого просто перенаправляет к URL Tomcat с /t/ префикс. Если я удаляю [R], затем я просто получаю 404.

Каково надлежащее RewriteRule решить мою проблему?

0
задан 02.10.2009, 14:11

1 ответ

Необходимо использовать 'P' (прокси) опция на правиле mod_rewrite, которое будет сделано внутренне к серверу. Необходимо будет также включить mod_proxy.

из mod_rewrite документов:

'proxy|P' (вызывают прокси),

Этот флаг вынуждает часть замены быть внутренне отправленной как запрос прокси, и сразу (перепишите остановки обработки здесь), проведенный через модуль прокси. Необходимо удостовериться, что строкой замены является допустимый URI (обычно стартовый с http://hostname), который может быть обработан модулем прокси Apache. В противном случае Вы получите ошибку от модуля прокси. Используйте этот флаг, чтобы достигнуть более мощной реализации директивы ProxyPass, отобразить удаленное содержание в пространство имен локального сервера.

Примечание: mod_proxy должен быть включен для использования этого флага.

3
ответ дан 24.11.2019, 04:45

Теги

Похожие вопросы