我有基于 restful webservices 的 webapps,运行于 Centos 6 上的 Apache httpd + mod_jk + Tomcat 6 + Jersey。
webservice urls 格式如下:
http://<ip-addr>/application/domain/<domain-name>/user/<user-id>?properties=<propertyname>
在正常情况下,Web 服务可以正常工作。但是,如果用户 ID 的值以 .pl 结尾,则会出现 404 错误。
例如。
http://192.168.0.17/application/domain/test.dom/user/amol.pl?properties=firstname
在 httpd error_log 中,我收到错误:文件不存在:amol.pl
因此看起来 httpd 并没有将请求转发给 tomcat,而是在寻找文件 amol.pl。
我直接在 tomcat 上执行了 web 服务
http://192.168.0.17:8080/application/domain/test.dom/user/amol.pl?properties=firstname.
它工作正常。
我不是 apache httpd 配置方面的专家,因此在 google 的帮助下,我尝试了一些随机技巧来告诉 httpd 忽略 .pl 文件,但无法使其正常工作。
以下事情不起作用:
- 从 /etc/mime.types 文件中删除“application/x-perl pl”行。
- 将 ExecCGI 更改为 -ExecCGI。
- 从 /etc/httpd/conf.d 中删除 perl.conf 文件
- 添加明确行 JkMount /application/*.pl ajp13
但现在的问题是我无法忽略 .pl 文件,因为我们确实有一些 .pl 文件。
httpd.conf 可在 处获得http://pastebin.com/PKwutE1H
。
虚拟主机配置文件位于http://pastebin.com/gNMEyuMh
我是否正确理解了问题出在 httpd 配置上?该问题是否可以在 httpd 级别解决?