Псевдоним URL в Apache2 с помощью mod_jk

Я использую Apache 2.4 с mod_jk и Tomcat с Java-сервлетом. Приложение, которое я обслуживаю, имеет ужасный 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 ответа

Решение

RewriteRule ... [PT] + mod_jk требует

JkOptions     +ForwardURICompatUnparsed

Попробуй это:

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

[R] - перенаправление, URL-адрес должен быть изменен в адресной строке.

[PT, L] не используется, поскольку [PT] включает в себя [L].

Другие вопросы по тегам