强制tomcat使用www.domain.com而不是domain.com

时间:2012-05-30 16:05:06

标签: apache tomcat

目前我正在使用Apache的mod_rewrite将所有html请求重定向到http(s)//www.domain.com/blah而不是http(s)://domain.com/blah。

除非我在domain.com:8080连接到tomcat,否则一切正常。我所做的就是天真地将相同的.htaccess文件放入我的/ opt / tomcat-7 / webapps / ROOT目录中,但它似乎不起作用。

我实际上希望我已经偏离了我上面尝试过的东西,并且有一种方法可以随时将domain.com:8080改写为www.domain.com:8080而无需放置新的。 htaccess文件进入每个webapp目录,但如果没有,我在上面做错了什么?

我已经在谷歌搜索了其他只有tomcat这个问题但没有用的人。

对于记录,我的.htaccess文件是:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

干杯, 本。

2 个答案:

答案 0 :(得分:6)

Tomcat对.htaccess文件没有任何作用:这是一个Apache httpd的东西。

你有两个选择,在这里:

  1. 编写一个过滤器,用于检查用于访问您的webapp的主机名,如果没有必要的“www”,则重定向。前缀。
  2. 将两个< Host>放入您的conf / server.xml文件中:一个主机名为“blah.com”,另一个主机名为“www.blah.com”,其中“blah.com”为默认值。然后,将您的webapp仅部署到“www.blah.com”,并将一个简单的webapp部署到“blah.com”,将所有内容重定向到所需的主机名。如果有帮助,您可以使用http://www.tuckey.org/urlrewrite/为您完成真正的工作。

答案 1 :(得分:0)

我更喜欢克里斯托弗指出的第二种方法,因为它会减轻主要应用的负担。

在tomcat中的webapps文件夹旁边创建一个新的 webapps2 文件夹,以重定向到主应用程序。 创建一个ROOT应用程序,不需要index.jsp。

webapps2
     |
     |--ROOT 
         |---WEB-INF
            |
            |-----lib
            |      |----urlrewritefilter-4.0.3.jar 
            |
            |---web.xml
            |---urlrewrite.xml

server.xml

中添加主机
<Host name="www.domain.com"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">
      ...
</Host>
<Host name="domain.com"  appBase="webapps2"
        unpackWARs="true" autoDeploy="true">
      <Context path="" docBase="ROOT"/>
</Host>

urlrewrite.xml

的结构
<urlrewrite>
    <rule>
        <name>seo redirect</name>
        <condition name="host" operator="notequal">^www.domain.com</condition>
        <condition name="host" operator="notequal">^localhost</condition>
        <from>^/(.*)</from>
        <to type="permanent-redirect" last="true">http://www.domain.com/$1</to>
    </rule>
</urlrewrite>

/ etc / hosts 文件

中添加域和子域
1.23.45.67 www.domain.com
1.24.53.57 www.domain.com