使用mod_jk

时间:2015-12-20 06:11:09

标签: apache tomcat mod-rewrite apache2 mod-jk

我正在使用带有mod_jk的Apache 2.4和运行Java servlet的Tomcat。我正在服务的应用程序有一个丑陋的索引URL:访问www.mydomain.com/将用户带到www.mydomain.com/view/user/www/。我想对其进行别名,以便用户看到www.mydomain.com/app/,而我正在尝试使用mod_rewrite来实现这一目标。 这是我目前的设置:

LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so
JkWorkersFile /etc/apache2/workers.properties
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # Is it one of these options?

VirtualHost *:80>
        ServerName www.mydomain.com
        Redirect permanent / https:/www.mydomain.com
</VirtualHost>

<VirtualHost *:443>
        ServerName www.mydomain.com
        ServerAdmin webmaster@localhost
        JkMount / tomcat
        JkMount /* tomcat

        LoadModule rewrite_module modules/mod_rewrite.so
        RewriteEngine On
        RewriteRule ^/$ /app [PT]
        RewriteRule ^/app/?$ /view/user/www [PT,L]
        RewriteRule ^/app/(.*)$ /view/user/www/$1 [PT,L]

        SSLEngine on
        SSLCertificateFile /path/to/my_domain.crt
        SSLCertificateKeyFile /path/to/my_domain.key
        SSLCertificateChainFile /path/to/chainfile.crt
        SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
</VirtualHost>

所有这些都在apache2.conf中。它目前正在做一些与我想要的不同的事情。当您在www.mydomain.com/app中输入内容时,栏中的地址将更改为www.mydomain.com/view/user/www(并提供正确的页面)。我希望该栏继续显示www.mydomain.com/app但显示tomcat在/ view / user / www中的内容,从而隐藏了用户的丑陋URL。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

试试这个:

RewriteRule ^/$ /app [R]
RewriteRule ^/app/?$ /view/user/www [PT]
RewriteRule ^/app/(.*)$ /view/user/www/$1 [PT]

[R]是一个重定向,应该在地址栏中修改url。

[PT,L]没有用,因为[PT]包括[L]。

答案 1 :(得分:1)

RewriteRule ... [PT] + mod_jk需要

JkOptions     +ForwardURICompatUnparsed