Правило перезаписи Apache с флагом прокси не работает для сервиса mediawiki - PullRequest
0 голосов
/ 30 мая 2011

У меня есть локальный apache httpd, на котором размещена служба mediawiki, которая прослушивает порт 3300. Служба может получить доступ в моей локальной сети через

http://mylan:3300/wiki/

Я настраиваю свой интернет-маршрутизатор, чтобы добавить запись перенаправления портов в mylan: 3300. Затем я могу получить доступ к вики через что-то вроде:

http://<dynamic domain>:3300/wiki/

Далее, у меня есть веб-сайт, который работает по всему миру. Веб-сервер также Apache httpd. Я добавляю правило перезаписи в .htaccess:

RewriteEngine On
RewriteRule ^/?wiki/?$ http://<dynamic domain>:3300/wiki/ [P]

Я хочу получить доступ к вики, которая размещается в моей локальной сети через прокси-метод, но с использованием глобального пространства имен интернет-домена:

http://<internet domain>/wiki/

После выполнения вышеуказанного URL-адреса из интернет-браузера я могу увидеть содержимое вики. Однако URL, отображаемый в адресной строке, изменится на

http://<dynamic domain>:3300/wiki/index.php/Main_Page

Чтобы проверить работу правила перезаписи прокси, я пытаюсь изменить правило перезаписи на:

RewriteRule ^/?wiki/?$ http://www.google.com/search?q=test [P]

Открыть URL:

Http: /// вики /

ведет меня на страницу поиска Google, но URL остается в виде http: ///wiki/.

Любые идеи, почему правило переписывания

RewriteRule ^/?wiki/?$ http://<dynamic domain>:3300/wiki/ [P]

сделать так, чтобы браузер отображал новый URL-адрес вместо пространства имен интернет-домена:

http://<internet domain>/wiki/

Хороший пример:

RewriteRule ^/?wiki/(.*)$ http://en.wikipedia.org/wiki/$1 [P]

Если мы получим доступ к URL:

http://<domain>/wiki/Country

URL всегда будет перезаписан и будет отображаться как

http://en.wikipedia.org/wiki/Country

Вместо этого я ожидаю, что оно будет отображаться как

http://<domain>/wiki/Country

но содержание от http://en.wikipedia.org/wiki/Country

1 Ответ

0 голосов
/ 30 мая 2011

Вероятно, редирект, который включает в себя полную ссылку. Чтобы переписать их, добавьте что-то вроде:

ProxyPassReverse /wiki/ http://<dynamic domain>:3300/wiki/

Я также заметил в онлайн-документации Apache для Руководство по перезаписи URL - Дополнительные разделы в разделе «Обработка содержимого», подраздел «Динамическое зеркало» имеет следующий пример:

RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^hotsheet/(.*)$  http://www.tstimpreso.com/hotsheet/$1  [P]
...