在 Apache2 中使用 mod_jk 别名 URL

Aliasing a URL in Apache2 with mod_jk

我将 Apache 2.4 与 mod_jk 和 Tomcat 运行 Java servlet 一起使用。我正在服务的应用程序有一个丑陋的索引 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/ [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。我怎样才能做到这一点?

试试这个:

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

[R]是重定向,地址栏中的url要修改。

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

RewriteRule ... [PT] + mod_jk 需要

JkOptions     +ForwardURICompatUnparsed