我试图找出是否有人成功使用了UrlRewriteFilter 从http://tuckey.org/urlrewrite/可用来执行301永久重定向 Apache Tomcat中的http到https,但我似乎没有快速到达任何地方。 一些人提出了同样的问题,AFAICS都没有得到答复 如果我在错误的地方提问,那么也许有人会将我“重定向”到正确的地方。 如果不可能那么也许有人可以这么说。
谢谢。
apache-tomcat-7.0.42
jdk1.8.0_77
CentOS Linux 7.2.1511
urlrewritefilter-4.0.3.jar
tomcat docs推荐的“标准”配置如下
web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>Secure URLs</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
server.xml
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<Connector port="443" maxThreads="150" scheme="https" secure="true"
SSLEnabled="true" keystoreFile="/opt/keys/tomcat.keystore"
keystorePass="*********" clientAuth="false" keyAlias="tomcat" sslProtocol="TLS" />
在浏览器中输入localhost会导致重定向到https 用curl检查这个,我们可以看到它按预期工作但我们得到302临时重定向
root@sandbox:/tmp# curl -D /tmp/headers.txt -s http://localhost
HTTP/1.1 302 Found
Server: Apache-Coyote/1.1
Cache-Control: private
Expires: Thu, 01 Jan 1970 01:00:00 GMT
Location: https://localhost/
Content-Length: 0
Date: Fri, 29 Apr 2016 18:24:47 GMT
然而,对于喜欢301永久
的Google来说,这是不可接受的是否可以使用UrlRewriteFilter来实现这一目标
以下规则导致302即使我正在使用type =“permanent-redirect” 其他一切都保持不变
<rule>
<name>seo redirect</name>
<condition name="host" operator="notequal">^www_example_com</condition>
<condition name="host" operator="notequal">^localhost</condition>
<from>^/(.*)</from>
<to type="permanent-redirect" last="true">https://www_example_com/$1</to>
</rule>
我尝试了各种不同的组合,但没有运气,因为Tomcat在应用过滤器后会重定向
有没有人真正让这个工作,所以我们得到301而不是302
谢谢