目前我正在使用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]
干杯, 本。
答案 0 :(得分:6)
Tomcat对.htaccess文件没有任何作用:这是一个Apache httpd的东西。
你有两个选择,在这里:
答案 1 :(得分:0)
我更喜欢克里斯托弗指出的第二种方法,因为它会减轻主要应用的负担。
在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