我在Tomcat上运行了一个Servlet + JSP应用程序。我使用mod-ajp在Tomcat上使用这些重写规则重定向apache:
RewriteRule ^/myapp/(.+) ajp://localhost:8009/myapp/$1 [P]
RewriteRule /myapp/(.+) ajp://localhost:8009/myapp/$1 [P]
适用于会话,但是,当我使用这些重写规则时:
RewriteRule ^/subdir1/subdir2/subdir3/myapp/(.+) ajp://localhost:8009/myapp/$1 [P]
RewriteRule /subdir1/subdir2/subdir3/myapp/(.+) ajp://localhost:8009/myapp/$1 [P]
HttpSession.getAttribute(“nameOfMyAttribute”)返回null。我看起来会话被“绑定”到某种主目录,这是通过重写规则改变的。是否可以强制会话忽略子目录?我错过了什么吗?
答案 0 :(得分:1)
Tomcat会将JSESSIONID cookie的路径设置为您应用的路径。在您的情况下,Cookie的路径为/myapp
。 Web浏览器会在/subdir1
之类的网址上忽略此Cookie,因为它与Cookie的路径不匹配。
以下是更改Cookie修复此问题的路径的一些示例:How to properly set JSESSIONID cookie path behind reverse proxy