2012-10-09 16 views
28

我以前从未设置过代理服务器。我使用共享主机,所以要设置Apache指令,我需要使用.htaccess。我可以使用.htaccess做下面的事吗?任何限制?ProxyPass和ProxyPassReverse可以在htaccess中工作吗?

ProxyRequests Off 
ProxyPass /img/ http://internal.example.com/img/ 
ProxyPass /app/ http://internal.example.com/app/ 

ProxyPassReverse/http://internal.example.com/ 

回答

33

You cannot use a ProxyPass in an htaccess file。该文件说,这是只适用于上下文:

上下文:服务器配置,虚拟主机,目录

不包括htaccess的(你不能有一个htaccess的块<Directory>)。但是,您可以使用ProxyPassReverse在内部重写导致重定向的代理请求的位置字段。你只需要使用mod_rewrite的P标志来代替ProxyPass。因此,像:

RewriteEngine On 
RewriteRule ^/?img/(.*)$ http://internal.example.com/img/$1 [L,P] 
RewriteRule ^/?app/(.*)$ http://internal.example.com/app/$1 [L,P] 

ProxyPassReverse/http://internal.example.com/ 

只是要清楚,你不能在htaccess文件使用ProxyPassProxyPassReverse,但你可以使用ProxyPassReverse利用的P标志mod_rewrite的规则。

+0

太棒了!这真的帮助我理解它。谢谢! –

+18

你不能在htaccess中使用'ProxyPassReverse'(http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypassreverse) –

+0

这是有效的,但是当我在其中一个内部页面上进行更改并且重新加载甚至在清除浏览器上的缓存后,我甚至都没有看到它打到内部服务器。这表明服务器上正在缓存某些内容,但如何更改该内容? – Michael

相关问题