2012-05-30 94 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 
相關問題