与我之前的一些问题有关。如何在Apache中使用mod_rewrite - > mod_jk - > tomcat安装程序?
我现在有一个设置,我很喜欢;
Apache httpd在端口80上侦听接受http和https连接。 在几个AJP端口上运行的几个Tomcat实例。
Mod_Jk发送不同的url请求到不同的tomcat实例;
www.mydomain.com/demo -> tomcat:8101
www.mydomain.com/test -> tomcat:8102
www.mydomain.com/ -> tomcat:8100
这是通过httpd.conf(或包含的子文件)中的以下配置实现的;
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
NameVirtualHost *:80
<VirtualHost *:80>
JkMount /demo* demoTomcat (workers.properties not shown)
JkMount /test* testTomcat
JkMount /* rootTomcat
</VirtualHost>
而且这一切都很好。我也使用类似的VirtualHost标签为SSL连接设置并运行https连接;
<VirtualHost _default_:443>
JkMount /demo* demoTomcat
JkMount /test* testTomcat
JkMount /* rootTomcat
... SSL Stuff follows ....
什么我现在有麻烦的是,我的SSL证书只适用于www.mydomain.com和NOT mydomain.com。
我建议使用下面的mod_rewrite调用;
Options +FollowSymlinks
LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.|$) [NC]
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [PT,L]
我已经在httpd.conf文件中的mod_jk规则之前和之后放置了它们。 Apache首先抱怨说RewriteEngine是一个无效的命令,但是当我首先记住LoadModule命令时,这消失了:)现在,Apache重新启动就好了,服务器启动并接受请求,一切都按照它使用的方式工作......但那就是只是它,这些mod_rewrite命令似乎没有效果?
我输入http://mydomain.com
进入浏览器,我只是得到我的网站按正常。该网址似乎并没有改变为http://www.mydomain.com
,当我开始访问安全区域时,我收到警告,说明mydomain.com
未被安全保护,并且正在为我提供来自其他网站的证书www.mydomain.com
(为什么这是一个问题,它可以'只是用一些逻辑来实现它的同一个网站,我不知道!)。
我把mod_rewrite规则放在错误的地方?我读过它应该工作,重写应该改变网址为www。然后通过mod_jk的东西进一步的东西?
里面的VirtualHost标签? – 2011-03-23 13:30:20
是在VirtualHost标签内。 – anubhava 2011-03-23 13:56:10
@Nick Foote:这个重写规则对你有用吗? – anubhava 2011-03-23 15:05:36