URL经常会出现 jsessionid,这是因为当你使用c:url的时候,它会判断当前域下是否已经创建jsessionid的cookie变量,如果没有并且你链接的是静态页面,那么c:url将传递jsessionid变量,迫使Tomcat为当前域创建jsessionid cookie。
当你使用 Apache Nginx 作为Tomcat前端是,由于Apache Nginx不识别;jsessionid=7D25CE666FF437F2094AA945E97CEB37这种URL,会跳出404页面。
解决方案一,放弃使用c:url,如果你需要保持context 的 path 设置,可以使用下面方法
<a href="${pageContext.request.contextPath}/test.html">Netkiller Test</a>
方案二,使用rewrite截取jsessionid做忽略处理
Apache:
ReWriteRule ^/(\w+);jsessionid=\w+$ /$1 [L,R=301] ReWriteRule ^/(\w+\.do);jsessionid=\w+$ /$1 [L,R=301]
Nginx:
rewrite ^(.*)\;jsessionid=(.*)$ $1 break;