为什么httpd.conf中的rewriteRule在此Apache代理服务器上不起作用?

问题描述

我认识到此问题与本网站上的其他问题相似。我花了几天的时间阅读这些文章并尝试不同的方法。没有一个起作用。

我正在尝试使用Apache代理服务器将特定的URL映射到新的URL。我在本地网络上有一个专用设备(黑匣子),该设备向original.remoteHost1.com发出呼叫。我希望在黑匣子请求服务时,使用此本地网络上的Apache代理服务器将new.remotehost2.com替换为original.remoteHost1.com。我可以配置Black Box使其指向代理服务器,但是Black Box不会公开接口来更改其HTTP服务请求的目标主机。

黑匣子仅提出两个非常具体的请求:

  1. http://original.remoteHost1.com/rectrack/file_name.php?data_1=text_string_1

  2. http://original.remoteHost1.com/rectrack/file_name.php?data_1=text_string_1&data_2=text_string_2

我希望更改为:

  1. http://new.remotehost2.com/rectrack/file_name.php?data_1=text_string_1

  2. http://new.remotehost2.com/rectrack/file_name.php?data_1=text_string_1&data_2=text_string_2

充当代理,Apache服务器接受黑盒请求并将其转发到original.remoteHost1.com。我希望我可以使用httpd.conf中的rewriteRule将original.remoteHost1.com更改为new.remotehost.com,但是我无法使用这个看似简单的功能

我尝试使用以下rewriteRule(以及许多变体)代替new.remotehost.com替代original.host.com,但我似乎无法让Apache真正进行替代:

LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine on
RewriteCond %{HTTP_HOST} original.remoteHost1.com
RewriteRule   ^(.*)  http://new.remotehost2.com/$1 [P]

有人知道为什么新的URL不能代替原始的URL吗?

解决方法

我能够解决这个问题。我不记得为什么我尝试过这种方法,我当然也不知道为什么它有效。我正在运行Windows7。在文件夹C:\ Windows \ System32 \ Drivers \ etc \中,有一个名为“主机”的文件。在该文件的与本地主机名称解析有关的部分中,添加了以下行:

127.0.0.1   original.remoteHost1.com

完成此操作后,rewriteCond和rewriteRule发挥了我预期的作用。