Правило перезаписи Apache с флагом прокси не работает для службы mediawiki

#apache #mod-rewrite #mediawiki

#apache #мод-перезапись #mediawiki

Вопрос:

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

 http://mylan:3300/wiki/
  

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

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

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

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

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

 http://<internet domain>/wiki/
  

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

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

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

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

Откройте URL:

http:///wiki/

приводит меня на страницу поиска 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:

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

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

Я также заметил, что в онлайн-документации Apache для руководства по перезаписи URL-адресов — Расширенные разделы в разделе по обработке контента, подраздел Dynamic Mirror содержит этот пример:

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

Комментарии:

1. Я получаю «500 Internal Server Error» после добавления ProxyPassReverse.