我正在使用带有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。我怎样才能做到这一点?
答案 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