我有一个包含大型媒体文件的Web应用程序项目,我希望它们与应用程序的其余部分分开,但保持相同的路径。

因此,例如,如果我在apache文档根目录中有一个文件:

/var/www/html/myapp1/media/bigFile.wmv


但我的应用程序的其余部分位于tomcat应用程序目录中:

/usr/share/tomcat/webapps/myapp1/


有没有办法查看Apache是​​否具有该文件,然后如果不在Tomcat中查看,然后什么也找不到,则提供404?

我刚刚尝试过这样做,并得到了一个tomcat404。这是因为我的tomcat在Apache后面运行,并且所有请求都直接发送到tomcat。

有没有一种方法可以查看Apache是​​否具有该文件,如果找不到,请在Tomcat中查找,然后,如果再次找不到任何内容,则提供404?

如果相反,那就是事实,如果我可以从tomcat转到apache到404,则可以将整个应用程序+媒体文件放在apache中,然后在tomcat中删除该应用程序的新版本。我不必在两个目录之间进行区别。

这是我当前用于重定向到tomcat的配置文件:

<VirtualHost *:80>
   ServerName localhost
   ServerAlias website.com

   ProxyRequests Off
   ProxyPreserveHost On

   ErrorLog /var/log/httpd/tomcat.error.log
   CustomLog /var/log/httpd/tomcat.log combined

   <Proxy *>
           Order deny,allow
           Allow from all
   </Proxy>

   ProxyPass / http://localhost:8080/
   ProxyPassReverse / http://localhost:8080/
</VirtualHost>

最佳答案

最好的方法是确定httpd不能满足请求,然后代理Tomcat。如果Tomcat一无所获,则Tomcat将发出404,而不是httpd以某种方式检测到该错误并重新获得控制权。

像大多数疯狂的事情一样,您应该能够使用mod_rewrite做到这一点:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule /path/to/apply - [H=jakarta-servlet]


完全未经测试,但可能会起作用(就像大多数mod_rewrite食谱一样)!

10-08 02:23