当我的网址为localhost:8080时,以下针对Tuckey UrlRewriteFilter的规则错误地导致localhost:8080重定向到www.example.com。
这种行为似乎与Tuckey UrlRewriteFilter参考手册相反!
我想要的是localhost:8080在没有重定向的情况下保持不变,以允许在本地计算机上进行测试。
我希望避免不在example.com域中的不需要的网址被搜索引擎编入索引。不需要的URL具有不同的域,但指向相同/重复的example.com页面。
<urlrewrite>
<rule>
<name>Avoid wrong hostname's pages being indexed by search engines</name>
<condition name="host" operator="notequal" next="and">www.example.com</condition>
<condition name="host" operator="notequal" next="and">localhost:8080</condition>
<from>^/(.*)</from>
<to type="permanent-redirect" last="true">http://www.example.com/$1</to>
</rule>
替代:
我还尝试了另一种方法:删除所有条件元素,并改变&#34;来自&#34;是:
<from>^/(^www.example.com|^localhost:8080)(\?.*)?$</from>
即。不等于example.com而不等于localhost - 但是这有同样的问题。
答案 0 :(得分:1)
我遇到了和你一样的问题,但是找不到使用tuckey的解决方案。我最终通过在Spring中使用拦截器来解决localhost-test和域名一致性的兼容性问题。我的代码就像这样
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
String url = request.getRequestURL().toString();
if (!url.startsWith("http://localhost") && !url.startsWith("http://www.example.com")){
response.sendRedirect("http://www.example.com"+request.getRequestURI());
return false;
}
return true;}
但是检查每个请求都会有必要的开销。希望这有帮助!
答案 1 :(得分:0)
因为你正在使用正则表达式匹配类型,请尝试给条件正则表达式。例如。 <condition name="host" operator="notequal">^www.example.com$</condition>