mod_rewrite 正在将多个请求发送回 Lucee 服务器

mod_rewrite is sending multiple requests back to Lucee server

我似乎遇到了 mod_rewrite 将多个请求发送回我的 Lucee 服务器的问题。有时 2 个请求,有时 4 个请求。我在 Lucee 中有一个特殊的应用程序框架来处理和管理所有请求。它要求将请求重写并作为“/”(root)代理回 Lucee,并将请求参数设置为用户请求的 URI。所有重写似乎都正常工作,但后端服务器触发了多个请求。以下是我的重写规则设置:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ "/" [E=vPath:,PT,NE,NS,L]

<If "-T reqenv('vPath')">
    RequestHeader add "vPath" "%{vPath}e"
</If>

RewriteRule 只是抓取 URI 并设置环境变量 "vPath",然后使用参数将 URI 重写为“/”:

PT (pass through to next handler)
NE (no URI escaping of output)
NS (not for internal sub-requests)
L (last rule)

这一切似乎都按需工作,但是,在测试中,我已经验证了命中 Lucee 背后代码的请求实际上被多次调用。如果我转 RewriteEngine off,那么只有一个请求被发送到后端。转动 RewriteEngine on 并再次发送多个请求(从 2 到 6 的任意位置)。

另请注意,如果我使用 "P"(强制代理)或 "PT"(传递给下一个处理程序)似乎并不重要,我得到相同的多个请求结果。

如有任何帮助,我们将不胜感激。我有点像 mod_rewrite.

的 NUBE

系统:

OS: Linux 4.18.0-11-generic
Java: 1.8.0_181
Lucee: 5.2.9.31
Apache Tomcat: 8.5.33

Alex 推荐我使用 mod_rewrite 的日志记录是正确的。 [给 Alex 的小费,谢谢!]

请注意,对于 mod_rewrite v2.4 及更高版本,您只需使用

LogLevel alert rewrite:trace6

这将更新

中的日志文件
/var/log/apache2/error.log

我的问题是我没有考虑对实际上不存在的文件的其他请求也被重定向到网络根目录,例如

/favicon.ico

这里的教训是一定要考虑到 所有 请求被代理回应用程序服务器,否则它将简单地为每个指向的 URI 执行根请求应用程序。