Java Grails应用程序-将非www版本重定向到网站的www版本
我们的Grails应用程序部署在VPS上,但www和非www版本是 不一样。实际上有两个站点,即浏览器中有两个cookie,每个版本一个,因此登录非www版本的用户不会登录www版本 在Grails中,将非www版本指向www版本的最佳方式是什么?我们是 使用Tomcat作为应用服务器 我想创建一个Grails过滤器,将所有非www url更改为附加www的同一url,并执行永久重定向。但我不确定这是否是一个好办法。我们在Tomcat前面没有Apache服务器,所以不能使用它的url重写机制Java Grails应用程序-将非www版本重定向到网站的www版本,java,tomcat,grails,redirect,Java,Tomcat,Grails,Redirect,我们的Grails应用程序部署在VPS上,但www和非www版本是 不一样。实际上有两个站点,即浏览器中有两个cookie,每个版本一个,因此登录非www版本的用户不会登录www版本 在Grails中,将非www版本指向www版本的最佳方式是什么?我们是 使用Tomcat作为应用服务器 我想创建一个Grails过滤器,将所有非www url更改为附加www的同一url,并执行永久重定向。但我不确定这是否是一个好办法。我们在Tomcat前面没有Apache服务器,所以不能使用它的url重写机制 谢
谢谢。如果您的Tomcat前面没有Apache服务器,您可以使用。一个类似Apache但直接与Tomcat(和其他web应用服务器)一起执行URL重写的工具。您有权访问Tomcat的主配置吗?Tomcat可以做虚拟主机,因此您可以使用一个简单的webapp设置一个单独的虚拟主机来执行重定向 conf/server.xml
非www-webapps/ROOT/WEB-INF/WEB.xml
重定向到WW
/WEB-INF/redirect.jsp
重定向到WW
/*
非www-webapps/ROOT/WEB-INF/redirect.jsp
<% response.sendRedirect("http://www.example.com" + request.getRequestURI() +
(request.getQueryString() == null
? ""
: ("?" + request.getQueryString())
)); %>
或者,如果您想要301而不是302重定向
<% response.setStatus(301);
response.setHeader("Location", "http://www.example.com" + request.getRequestURI() +
(request.getQueryString() == null
? ""
: ("?" + request.getQueryString())
));
response.setHeader("Connection", "close"); %>
+1因为此解决方案节省了我的时间。但是我的SEO工程师看起来很伤心,因为浏览器说它是302,而不是301-你能解释一下用这个解决方案301而不是302是否可行吗?是吗-jsp代码现在看起来像这样