我已经在我的 Apache 虚拟主机中设置了重定向,为几个子域名提供服务 - 分别称为 a.example.com 和 b.example.com - 为 ruby on rails 应用程序提供服务。
在我的虚拟主机配置文件中我有以下规则:
rewriteEngine on
rewriteRule proxy/(.+)$ http://news.example.com/$1 [P]
我的想法是,我可以执行http://a.example.com/proxy/news/a
并获取的内容http://news.example.com/news/a
,但在同一个子域内,因此 ajax 不认为我的 ajax 请求是跨域的 -有关此问题的更多信息。
问题是,虽然它在我的暂存环境中运行良好,但在生产中却不能!
两台服务器都是 Ubuntu 服务器 10.04。Apache 来自标准 ubuntu 存储库,使用apt-get install
。
我对整个 /etc/apache2/ 目录进行了比较,唯一的区别是服务器名称。
如果我将最后一个选项改为 [L],就会出现重定向,因此我认为 mod_rewrite 正在运行。它只是没有与 mod_proxy 通信。
通过查看日志(/var/log/apache2
和 rails 日志),似乎生产中的重写规则被忽略了——日志与没有重写规则时完全相同。
我该如何调试?我是否可以强制 Apache 向我提供更多信息,说明为什么在访问时未执行此特定规则/proxy
?
答案1
我刚刚意识到这里不适合问这种问题。
我正在将这个问题移至 serverfault,并会在允许后立即将此答案标记为“正确”。如果您要回答这个问题,请在此处回答: