我正在运行带有 Tomcat 6 的 Apache 2.2,并且在使用 RewriteRule 的 Apache 和 Tomcat 中都进行了多层 URL 重写。我想传递 Apache 看到的原始 REQUEST_URI,以便我可以正确记录“页面未找到”错误等。
在 httpd.conf 中有一行:
SetEnv ORIG_URL %{REQUEST_URI}
在 mod_jk.conf 中,我有:
JkEnvVar ORIG_URL
request.getAttribute("ORIG_URL")
我认为这应该通过Servlet提供该值。
但是,我看到的都是"%{REQUEST_URI}"
,所以我假设 SetEnv 不解释%{...}
语法。在 Tomcat 中获取用户请求的 URL 的正确方法是什么?
答案1
使用:
RewriteRule (.*) - [E=ORIG_URL:$1]
答案2
使用getRequestURI()
和getRequestURL()
(也许还有getQueryString()
)方法HttpServletRequest
班级。