问题描述
我认识到此问题与本网站上的其他问题相似。我花了几天的时间阅读这些文章并尝试不同的方法。没有一个起作用。
我正在尝试使用Apache代理服务器将特定的URL映射到新的URL。我在本地网络上有一个专用设备(黑匣子),该设备向original.remoteHost1.com发出呼叫。我希望在黑匣子请求服务时,使用此本地网络上的Apache代理服务器将new.remotehost2.com替换为original.remoteHost1.com。我可以配置Black Box使其指向代理服务器,但是Black Box不会公开接口来更改其HTTP服务请求的目标主机。
黑匣子仅提出两个非常具体的请求:
-
http://original.remoteHost1.com/rectrack/file_name.php?data_1=text_string_1
-
http://original.remoteHost1.com/rectrack/file_name.php?data_1=text_string_1&data_2=text_string_2
我希望更改为:
-
http://new.remotehost2.com/rectrack/file_name.php?data_1=text_string_1
-
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发挥了我预期的作用。