Apache Velocity:$request.getHeader('referer') 给出意外结果

Apache Velocity: $request.getHeader('referer') giving unexpected results

在我的 404 错误页面上,我想显示 referer URL 然后用它来 运行 搜索以尝试找到正确的页面。

在我的 header Velocity 模板文件中,我使用

$response.sendRedirect("$link.requestBaseURL/404_page_not_found_7_293?t=$date.getSystemTime()") 

在用户尝试访问 old-style 页面时将用户引向 404 页面(这些旧页面不再打算访问,但其中一些可能仍被索引 Google).

在 404 页面本身,我正在使用

#set($referrer = $request.getHeader('referer'))

获取引荐来源网址,但不是显示将用户引荐至 404 页面的页面的 URL,而是显示他们之前访问的页面的 URL!例如,如果您转到该站点的主页,然后单击转发到 404 页面的损坏的 link - 引用者作为主页给出,而不是损坏的 link。

如何获得正确的 referer?

重定向不会更改 Referer header。即使在 HTTP 1.1 RFC 中没有明确说明,这也是大多数浏览器的政策。

您最好的选择是将错误的 URL 作为损坏页面本身的查询参数传递。