【问题标题】:Forcing tomcat to use www.domain.com instead of domain.com强制 tomcat 使用 www.domain.com 而不是 domain.com
【发布时间】:2012-05-30 16:05:06
【问题描述】:

目前我正在使用 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]

干杯, 本。

【问题讨论】:

    标签: apache tomcat


    【解决方案1】:

    Tomcat 不会对 .htaccess 文件做任何事情:这是 Apache httpd 的事情。

    这里有几个选项:

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

    【讨论】:

      【解决方案2】:

      我更喜欢 christopher 指出的第二种方法,因为它减轻了主应用程序的负担。

      在 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-04
        • 1970-01-01
        • 1970-01-01
        • 2012-02-04
        • 1970-01-01
        • 2012-03-11
        相关资源
        最近更新 更多