带有代理标志的Apache重写规则不适用于MediaWiki服务

问题描述

|| 我有一个本地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]