问题描述
||
我有一个本地Apache httpd,它托管一个侦听端口3300的mediawiki服务。该服务可以通过以下方式在我的LAN中访问
http://mylan:3300/wiki/
@H_404_2@
我将我的互联网路由器配置为向mylan:3300添加端口转发条目。然后,我可以通过以下方式访问Wiki:
http://<dynamic domain>:3300/wiki/
@H_404_2@
接下来,我有一个全球服务的网站。 Web服务器也是apache httpd。我在.htaccess中添加了重写规则:
RewriteEngine On
RewriteRule ^/?wiki/?$ http://<dynamic domain>:3300/wiki/ [P]
@H_404_2@
我希望通过代理方法但使用全局Internet域名称空间访问在本地LAN上托管的Wiki:
http://<internet domain>/wiki/
@H_404_2@
从Internet浏览器执行上述URL后,我可以看到Wiki内容。但是,地址栏中显示的URL更改为
http://<dynamic domain>:3300/wiki/index.PHP/Main_Page
@H_404_2@
为了测试代理重写规则的工作,我尝试将重写规则更改为:
RewriteRule ^/?wiki/?$ http://www.google.com/search?q=test [P]
@H_404_2@
打开URL:
http:/// wiki /
带我到Google搜索页面,但URL仍为http:/// wiki /。
任何想法为何重写规则
RewriteRule ^/?wiki/?$ http://<dynamic domain>:3300/wiki/ [P]
@H_404_2@
使浏览器显示新的URL地址而不是Internet域名空间:
http://<internet domain>/wiki/
@H_404_2@
一个很好的例子是:
RewriteRule ^/?wiki/(.*)$ http://en.wikipedia.org/wiki/$1 [P]
@H_404_2@
如果我们访问URL:
http://<domain>/wiki/Country
@H_404_2@
该网址将始终被重写并显示为
http://en.wikipedia.org/wiki/Country
@H_404_2@
相反,我希望它显示为
http://<domain>/wiki/Country
@H_404_2@
但内容来自http://en.wikipedia.org/wiki/国家/地区
解决方法
可能是包含完整链接的重定向。要重写它们,请添加以下内容:
ProxyPassReverse /wiki/ http://<dynamic domain>:3300/wiki/
我还注意到在内容处理部分的Apache在线文档中的URL重写指南-高级主题的“动态镜像”小节中有以下示例:
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^hotsheet/(.*)$ http://www.tstimpreso.com/hotsheet/$1 [P]