我已经设置好了一切,但 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