【问题标题】:mod_rewrite is sending multiple requests back to Lucee servermod_rewrite 正在将多个请求发送回 Lucee 服务器
【发布时间】: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

【问题讨论】:

标签: mod-rewrite url-rewriting coldfusion apache2 lucee


【解决方案1】:

Alex 提到我使用 mod_rewrite 的日志记录是正确的。 [给亚历克斯的小费,谢谢!]

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

LogLevel alert rewrite:trace6

这将更新日志文件

/var/log/apache2/error.log

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

/favicon.ico

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

【讨论】:

    猜你喜欢
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    相关资源
    最近更新 更多