2009-07-31 45 views
0

我有一個Tomcat(6.0.20)和Apache服務器設置(2.2),並試圖將所有子域重定向到我的域上的特定上下文。使用mod_jk重定向tomcat上的子域通過Apache服務器

例如,s.example.com重定向到www.example.com

Apache是​​經由mod_jk fowarding請求(我試圖mod_proxy,但CSS和JS沒有加載作爲其不絕對URL)。

我的當前設置:

的httpd.conf:

Include C:/apache-tomcat-6.0.20/conf/auto/mod_jk.conf 
RewriteEngine On 
<VirtualHost *:80> 
    ServerName www.example.co.za 
    ServerAlias www.example.co.za example.co.za *.example.co.za 
    RewriteEngine on 
    RewriteLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/rewrite.log" 
    RewriteLogLevel 3 
    RewriteCond %{HTTP_HOST} example\.co\.za.*$ [NC] 
    RewriteRule ^(.*)$ http://www.example.co.za [L] 
    JkMount /* worker1 
</VirtualHost> 
JkMount /* worker1 

的server.xml:

<Host name="www.example.co.za" appBase="hosts/example" 
     unpackWARs="true" autoDeploy="true" 
      xmlValidation="false" xmlNamespaceAware="false"> 
      <Valve className="org.apache.catalina.valves.AccessLogValve" 
       directory="C:/apache-tomcat-6.0.20/logs" prefix="localhost_access_log." 
       suffix=".txt" pattern="common" resolveHosts="false"/> 

      <Context path="" docBase="Property"/> 
       <Alias>*.example.co.za</Alias> 
     </Host> 

爲ww.example.com重定向是進入非停止重定向循環。

從安全的角度來看,這非常重要,因爲用戶可以訪問服務器上的tomcat管理器和其他應用程序(即hudson)。

回答

1

試試這個規則:

RewriteCond %{HTTP_HOST} !^www\.example\.co\.za$ 
RewriteRule^http://www.example.co.za [L] 

如果你想保持請求的URI:

RewriteCond %{HTTP_HOST} !^www\.example\.co\.za$ 
RewriteRule^http://www.example.co.za%{REQUEST_URI} [L] 

此外,我建議你使用301重定向。因此,通過將[L]替換爲[L,R=301]來添加值爲301的R標誌。

+0

難以置信的簡單。謝謝 – RaelG 2009-07-31 15:16:10

相關問題