2015-02-09 63 views
0

我有一个在Tomcat上运行的Servlet + JSP应用程序。我用MOD-AJP使用这些重写规则重定向在Tomcat阿帕奇:Servlet + mod-rewrite:HttpSession.getAttribute()返回null

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。我看起来像会话被“绑定”到某种主目录,这些主目录被重写规则改变了。是否有可能强制会话忽略子目录?我在那里错过了什么?

回答

1

Tomcat会将JSESSIONID Cookie的路径设置为您应用的路径。在你的情况下,cookie的路径是/myapp。网页浏览器会忽略像/subdir1这样的网址上的此Cookie,因为它与Cookie的路径不匹配。

这里是改变cookie的路径来解决一个问题,像这样的一些例子:How to properly set JSESSIONID cookie path behind reverse proxy

+0

谢谢。有用! – evg02gsa3 2015-02-11 14:19:43