#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.