Apache Velocity:$ request.getHeader(' referer')给出了意想不到的结果

时间:2016-06-07 09:15:38

标签: http-status-code-404 velocity referrer http-referer

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

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

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

在用户尝试访问旧式页面时将用户引用到404页面(这些旧页面不再打算被访问,但其中一些页面仍可能被Google编入索引)。

在404页面上,我正在使用

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

获取引用,但它不显示将用户引用到404页面的页面的URL,而是显示之前访问过的页面的URL!例如,如果您转到该站点的主页,然后单击一个转发到404页面的断开链接 - 将引用作为主页,而不是断开的链接。

如何获得正确的引用?

1 个答案:

答案 0 :(得分:0)

重定向不会更改Referer标头。即使在HTTP 1.1 RFC中不清楚,它也是大多数浏览器的政策。

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