與我之前的一些問題有關。如何在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