1

我目前对 JKMount 和 Alias 的 apache 配置有问题。

我用 JKMount 挂载了我的应用程序

    JkMount /app1/*.jsp app1
    JkMount /app1/* app1

我的本地文件系统上有一些静态图像。

如果 url 像http://testapp.com/app1/capture/testImg.jpg那么我必须从我的 C:/capture/testImg.jpg 提供图像。

为此,我使用 AliasMatch

AliasMatch /app1/capture/(.*)$ C:/capture/img/$1 

这里的问题是我不能将 AliasMatch 与 JKMount 一起使用。

如果我评论 JKMount 部分,那么我可以访问图像。但我的应用程序不工作。

如果我取消注释 JKMount 部分,我的应用程序正在运行,但我无法访问图像。

这是我在 httpd.conf 中的配置

   NameVirtualHost testapp.com
   <VirtualHost testapp.com:80> 
        ServerName testapp.com
    DocumentRoot "Z:\TestApp\app1\src\main\webapp\public"
    AliasMatch /app1/capture/(.*)$ C:/capture/img/$1 
    #<Directory C:/capture/img/>
    #   Order Deny,Allow
    #   Allow from all
    #</Directory>
    RewriteEngine on   
        RewriteRule ^/(.*) http://testapp.com/$1 [R=301,L]
    JkMount /app1/*.jsp app1
        JkMount /app1/* app1


    <Directory  C:/capture/img/>
    Order Allow,Deny
    Allow from all
    </Directory>

       ErrorLog "z:\logs\apache_error_log"
       CustomLog "z:\logs\log_custom" combined
    </VirtualHost>

任何人都可以帮我解决上述问题

谢谢

4

1 回答 1

5

我已经阅读了 Apache Tomcat 文档。

http://tomcat.apache.org/connectors-doc/webserver_howto/printer/apache.html

当 jk 和 alias/userdir URL 匹配时,您可以使用 no-jk env var 来解决 mod_alias 或 mod_userdir 指令的问题。

所以我的新 httpd.config 看起来像这样

NameVirtualHost testapp.com
<VirtualHost testapp.com:80> 
    ServerName testapp.com
    DocumentRoot "Z:\TestApp\app1\src\main\webapp\public"
    #AliasMatch /app1/capture/(.*)$ C:/capture/img/$1 

    RewriteEngine on   
    RewriteRule ^/(.*) http://testapp.com/$1 [R=301,L]
    SetEnvIf Request_URI "/app1/capture/*" no-jk
    Alias /app1/capture/ C:/capture/img/

    <Directory  C:/capture/img/>
        Order Allow,Deny
        Allow from all
    </Directory>


     JkMount /app1/*.jsp app1
     JkMount /app1/* app1

   ErrorLog "z:\logs\apache_error_log"
   CustomLog "z:\logs\log_custom" combined
</VirtualHost>

一切对我来说都很好。

于 2012-09-07T02:01:20.840 回答