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

Apache 强制tomcat使用www.domain.com而不是domain.com,apache,tomcat,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:808

目前,我正在使用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]
干杯,
Ben.

Tomcat不处理.htaccess文件:这是ApacheHTTPD的事情

您有两个选择,如下所示:

  • 编写一个过滤器,检查用于访问您的Web应用程序的主机名,如果它没有必要的“www.”前缀,则重定向
  • 在conf/server.xml文件中放置两个:一个主机名为“blah.com”,另一个主机名为“www.blah.com”,其中默认为“blah.com”。然后,只将您的webapp部署到“www.blah.com”中,并将一个简单的webapp部署到“blah.com”中,将所有内容重定向到所需的主机名。如果有帮助的话,你可以用它来为你做真正的工作

  • 我更喜欢christopher提出的第二种方法,因为它可以减轻主应用程序的负担

    在tomcat中的webapps文件夹旁边创建一个新的webapps2文件夹,以重定向到主应用程序。 创建一个根应用程序,不需要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>
        <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>
    
    1.23.45.67 www.domain.com
    1.24.53.57 www.domain.com