【问题标题】:URL redirection in Java return 302 instead of 301Java 中的 URL 重定向返回 302 而不是 301
【发布时间】:2012-02-04 02:43:19
【问题描述】:

我正在使用此代码重定向网址:

  response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
  response.sendRedirect(newURL);

我可以看到一个正确的重定向,但响应中返回的值是 302 而不是 301。我怎样才能将其强制为 301?

【问题讨论】:

    标签: java redirect http-status-code-301


    【解决方案1】:

    如果您使用sendRedirect,它会将状态重置为 302。您必须使用 setHeader 自己设置 Location 标头才能使用 301 状态进行重定向。

    示例代码:

    response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
    response.setHeader("Location", "http://somewhere/");
    

    从这个答案中得出: HttpServletResponse sendRedirect permanent

    【讨论】:

    • 我添加了这个:response.setHeader("Location", newUrl); response.setHeader("连接", "关闭");但它不起作用
    • 发现了问题:) 现在可以了,我忘了删除 response.sendRedirect(newURL);对不起,伙计们!
    • 嗯,实际上 sendRedirect 接受相对 URL 并将它们解析为绝对 URL。明确设置位置 - 正如您在此处建议的那样 - 没有任何解决逻辑。任何建议的尽可能简单的方法来正确地从相对路径到绝对路径解决它?
    猜你喜欢
    • 2019-04-12
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 2015-03-15
    • 2014-09-19
    • 1970-01-01
    相关资源
    最近更新 更多