java重定向301但浏览器无法正确打开新网址

时间:2018-04-08 09:07:59

标签: java tomcat redirect servlets

我将旧域中的所有数据移动到新域。许多链接都是由谷歌索引的,对我们来说很重要所以我想重定向301所有链接,如下所示:

  

my_domain.ir/Server?do=content&id=24

  

my_domain.com/Server?do=content&id=24

以下代码是Server.java,它是一个servlet

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {        
    System.out.println("_______________________________________________");

    String url = request.getRequestURL().toString() +"?"+ request.getQueryString();
    System.out.println(url);// http://my_domain.ir/Server?do=content&id=24
    url = url.replace(".ir", ".com");
    url = url.replace("localhost:9090", "mydomain.com");//to test from localhost
    System.out.println(url);//http://my_domain.com/Server?do=content&id=24
    response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
    response.setHeader("Location", url);
    response.setHeader( "Connection", "close" );
    System.out.println("_______________________________________________");
}

打电话后我可以看到http://my_domain.ir我可以看到301重定向代码但是在地址栏中是“http://my_domain.com/Server”而浏览器dos没有打开任何页面。

我尝试将所有内容重定向到http://my_domain.com/index_test.html但效果相同。

对我们来说,保存我在谷歌中的域名位置非常重要,这个问题有害吗?

1 个答案:

答案 0 :(得分:0)

只是查了一下,因为我记得这个(从10年前开始),但你可以更容易地重定向:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {        
    System.out.println("_______________________________________________");

    String url = request.getRequestURL().toString() +"?"+ request.getQueryString();
    System.out.println(url);// http://my_domain.ir/Server?do=content&id=24
    url = url.replace(".ir", ".com");
    url = url.replace("localhost:9090", "mydomain.com");//to test from localhost
    System.out.println(url);//http://my_domain.com/Server?do=content&id=24
    response.sendRedirect(url);
    System.out.println("_______________________________________________");
}

免责声明:我没有检查您的网址重写是否真的正确。