Псевдоним 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].