【发布时间】:2019-04-20 06:36:21
【问题描述】:
我似乎有一个问题,即 mod_rewrite 将多个请求发送回我的 Lucee 服务器。有时 2 个请求,有时 4 个请求。我在 Lucee 中有一个特殊的应用程序框架来处理和管理所有请求。它要求将请求重写并作为“/”(根)代理回 Lucee,并将请求参数设置为用户请求的 URI。所有重写似乎都正常工作,但后端服务器触发了多个请求。以下是我的重写规则设置:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ "/" [E=vPath:$1,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
【问题讨论】:
-
Start with logging the rewrite 然后从那里开始。
标签: mod-rewrite url-rewriting coldfusion apache2 lucee