2012-05-30 46 views
2

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

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

我实际上希望自己的方式不符合我上面尝试过的方法,并且有一种方法可以随时将www.domain.com:8080重写为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] 

干杯, 奔。

回答

6

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/为您做真正的工作。
+0

完美,谢谢你的帮助。 –

0

我更喜欢克里斯托弗指出的第二种方法,因为它将负载从主应用程序中取出。

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

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

添加主机在server.xml中结构urlrewrite.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> 

加入域和子域在/etc/hosts中文件

1.23.45.67 www.domain.com 
1.24.53.57 www.domain.com 
相关问题