在 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
我将 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