这就是我想要做的:任何无法在一台机器上解析的 URI 都会通过反向代理撞到另一台机器上。配置如下所示:
RewriteEngine On
RewriteCond %{REQUEST_URI} !-U
RewriteRule ^/(.*)$ http://other.site/$1 [P,NS]
现在,应该说的是“如果我无法通过运行子请求在本地找到任何东西,请将其发送到代理。”
唯一的问题是,它不这样做。随着 RewriteLogLevel 被顶起,我得到了这个:
31.3.3.7 - - [29/Jul/2012:00:26:18 --0700] [internet.srs.bznz/sid#7fc6099fa228][rid#7fc609bf2bf0/initial] (5) RewriteCond URI (-U) check: path=/ -> status=200
31.3.3.7 - - [29/Jul/2012:00:26:18 --0700] [internet.srs.bznz/sid#7fc6099fa228][rid#7fc609bf2bf0/initial] (4) RewriteCond: input='/' pattern='!-U' => not-matched
那台机器上/上什么都没有。它应该返回 403。所以我的问题是:200 OK 到底是从哪里来的?这是一个全新的 Debian VPS,所以配置中没有任何污染。我在其他地方(Ubuntu 12.04)也尝试过同样的事情。
如何找出导致错误成功代码的原因?