【发布时间】:2019-08-20 00:48:14
【问题描述】:
我已为我的项目配置了自签名证书,并已配置为将不安全的 http 重定向到 https。我还想将一个请求重定向到一个没有“www.”前缀的主机到一个没有“www.”前缀的主机,比如当我们向https://google.com发出请求时,它会自动重定向到https://www.google.com。
现在,为了做到这一点,我找到了一个名为 UrlRewriteFilter 的库,但该库具有 XML 中可用的配置。我试图将 XML 配置转换为 java 等效配置,但我没有运气,因为我找不到 java 等效方法。我尝试通过参考this Baeldung resource 来转换配置。下面是基于 XML 的配置。我正在使用带有嵌入式 undertow 服务器的 Spring Boot 1.5.19。请帮忙。
Maven 依赖:
<dependency>
<groupId>org.tuckey</groupId>
<artifactId>urlrewritefilter</artifactId>
<version>4.0.4</version>
</dependency>
web.xml
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
urlrewrite.xml
<urlrewrite>
<rule>
<name>seo redirect</name>
<condition name="host" operator="notequal">^www.csetutorials.com</condition>
<from>^/(.*)</from>
<to type="permanent-redirect" last="true">http://www.csetutorials.com/$1</to>
</rule>
</urlrewrite>
【问题讨论】:
-
为什么不用
redirect:www添加一个映射到非 WWW 的控制器?这个库不是必需的——它真的是为使用原始 servlet 的人设计的。 -
只是出于好奇 - 如果您希望执行从裸域到 www 的重定向,为什么不在 Web 服务器级别执行呢?
-
@CuriousMind 这可以使用 bean 完成吗?我正在使用 Embedded Undertow 服务器。
标签: java spring-boot undertow tuckey-urlrewrite-filter