mod_rewrite 不会重写 jsp 文件

mod_rewrite 不会重写 jsp 文件

我已经设置好了一切,但 mod_rewrite 在 HTML 文件上可以正常工作,但在 jsp 文件上却不行。

我在重写日志中收到以下消息:

(2)使用请求的 uri /index.jsp 初始化重写引擎,将模式 '^/([\w\d]*).jsp$' 应用于 uri '/index.jsp' (2)重写 '/index.jsp' -> '/sb/jsp/index.jsp' (2)强制将 '/sb/jsp/index.jsp' 传递到下一个 API URI 到文件名处理程序

我已经设置了 mod_jk,可以毫无问题地访问 /sb/jsp/index.jsp。我希望用户访问 /index.jsp,然后将其重写为 /sb/jsp/index.jsp。

我的重写规则(注意我使用 PT 标志强制 mod_rewrite 转发到 mod_jk):

重写规则 ^/([\w\d]*).jsp$ /sb/jsp/$1.jsp [PT] [NC] [QSA] [L]

有人知道发生了什么事吗?似乎请求已被转发,但从未到达 mod_jk。

我刚刚注意到的另一件事。如果我删除 PT 标志,我会在日志中收到不同的消息:(1) 继续使用 /sb/jsp/index.jsp [OK] 并且使用 /index.jsp 而不是 /sb/jsp/index.jsp 因此似乎 apache 正在转发到 tomcat,而不是重写的 URL...

谢谢!

答案1

^/([\w\d]*).jsp$/sb/jsp/$1.jsp

上面有些东西看上去不正确。

以下是我的运行配置中的一条规则。

重写规则 ^(.*)$ http://agent.hepmepls.com:8443$1 [R,NE,QSA,P,L]

此规则将获取 .* 后面的所有内容并将其包装在我想要的 URL 周围....就像这样

http://agent.hepmepls.com/megavil?argue/junk.html
变成
http://agent.hepmepls.com:8443/megavil?argue/junk.html

但我觉得 $ 和 $1 让你困惑了...我可能完全错了...但如果你按照你的规则解雇某个人,它不会做以下事情吗?

http://hepmepls.com/something.jsp?l8trarguments==
变成
http://hepmepls.com/?l8trarguments==.jsp

相关内容