我有一个Tomcat(6.0.20)和Apache Server设置(2.2),我正在尝试将所有子域重定向到我的域上的特定上下文。
例如,s.example.com重定向到www.example.com
Apache正在通过mod_jk
发送请求(我尝试了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管理器和其他应用程序(即哈德森)。
答案 0 :(得分: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重定向。因此,将R
替换为[L]
,将[L,R=301]
标记添加为值301。