使用代理而不是使用htaccess rewriteRule重定向

时间:2012-04-02 08:18:22

标签: apache .htaccess proxy localhost

我正在开发一个webapp,对于静态文件,我只是在localhost使用apache而后端是在localhost:5984运行的couchdb实例上。

webapp始终与后端的文件进行交互。因此,当尝试在apache上测试时,由于跨域策略,所有对localhost:5984的文件请求都被阻止了,所以实现这一点的唯一方法就是通过设置标志来忽略它来启动浏览器。

但是当我尝试在移动设备上测试应用程序时,我再次陷入困境。

目前我在.htaccess文件中有此内容。

RewriteEngine  on

# these are 302 http redirections instead of serving as a proxy
RewriteRule auth http://localhost:5984/auth [L]
RewriteRule db/([\s\S]+) http://localhost:5984/db/$1 [L]
RewriteRule send/([\s\S]+) http://localhost:5984/send/$1 [L]

# these are just redirections to static files and work great
RewriteRule ^([a-z/.]+) _attachments/$1 [L]
RewriteRule ^$ _attachments/ [L]

正如您所看到的,我真的不知道如何处理apache配置。 但是现在正在发生的事情是,对于其中一些规则,apache只是重定向页面而不是将其作为代理服务器提供,从而导致跨域问题。

同样在第一个auth规则上,我发送POST和DELETE请求作为重定向而不是代理,它不会传递POST的数据。

所以我想要实现的是激活某种功能(如果它存在),这将使apache简单地呈现在localhost域上的页面而不是重定向它。 (我把它命名为代理,但也许这甚至不是正确的术语,对于任何使用命名法的错误都很抱歉。)

有可能实现这样的行动吗? 提前致谢

1 个答案:

答案 0 :(得分:3)

看看这些链接/选项:

  1. [P]标志:

  2. mod_proxy 可能 - 但我认为#1应该足够,如果它位于同一台服务器上):