2

目前我正在使用 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 目录,但如果不是,我在上面做错了什么?

我已经在 Google 上搜索了其他与 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]

干杯,本。

4

2 回答 2

6

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

你有几个选择,在这里:

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

我更喜欢 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
于 2014-05-12T16:02:29.373 回答