我可以在我的笔记本电脑上配置Apache,以便除了一个以外的所有请求转发到真实站点

时间:2014-04-01 11:21:17

标签: apache mod-rewrite mod-proxy

我想在我拥有的网站上运行一些本地测试。该网站可在www.mysite.com上访问。我想从本地计算机中获取一个特定文件。

我认为我可以做到这一点
  • 在本地安装Apache
  • 添加' localhost www.mysite.com'到我的主机文件
  • 配置Apache以将所有请求转发到www.mysite.com,但对特定文件www.mysite.com/myapp/myfile.css的请求除外,该文件应该从本地运行的Apache Web服务器提供。

首先,我不确定该设置是否有效 - 如果请求的文件不是我的特殊情况,请求将被转发到www.mysite.com / ...,但是然后(因为我的hosts文件中的条目)回到我的本地Apache服务器并进入一些无限循环?

其次(如果上述情况不正确,则仅相关),我如何配置Apache来做到这一点?我想我需要一个ProxyPass,但我很难搞清楚到底是什么。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为您无法以您建议的方式执行此操作,因为您将无法执行查询以代理www.mysite.com您已将其定义为localhost。

您可以在主机文件中创建另一个域,比如local.mysite.com并在那里托管所需的网站文件并将其他所有内容代理到www.mysite.com:

<VirtualHost *:80>

 ServerName local.mysite.com
 DocumentRoot ...

 <Directory ...>
   ...
 </Directory>

 RewriteEngine On
 RewriteCond %{REQUEST_URI} !^/myapp/myfile.css
 RewriteRule ^(.*)$ http://www.mysite.com/$1 [P]

</VirtualHost>

或者,如果www.mysite.com直接使用IP(即不通过虚拟主机),您可以将localhost指向mysite.com并在重写代理中使用真实IP。

<VirtualHost *:80>

 ServerName www.mysite.com
 DocumentRoot ...

 <Directory ...>
   ...
 </Directory>

 RewriteEngine On
 RewriteCond %{REQUEST_URI} !^/myapp/myfile.css
 RewriteRule ^(.*)$ http://1.2.3.4/$1 [P]

</VirtualHost>