在我为任何404重定向到的错误页面上,我想记录用户试图访问的网址。
我试过这个,但它不起作用:
ErrorDocument 404 /error/?url=%{HTTP_REFERRER}
谁能告诉我怎么做?
答案 0 :(得分:0)
使用%{REQUEST_URI}
试用。我不确定这会在ErrorDocument中工作,因为我从未测试过它,但是值得尝试。
ErrorDocument 404 /error/?url=%{REQUEST_URI}
答案 1 :(得分:0)
没有直接的方法。也不是perfect
。但PHP的解决方法很少。
例如,我目前使用一个函数来创建每个页面的链接。所以我只需要将file_exists()添加到main函数中(单个函数中的几行)。
这是我用来创建网址的功能:
function url ($Value)
{
// Do some stuff with the url
// [Not showed]
if (!file_exists("/internal/path/".$Value))
{
// Call a function to store the error in a database
error ("404", $Value);
// One way of handling it. Replace '/' for ' ' and search that string.
// Example: "path/to/page" would become "path to page".
$Value=str_replace("/","%20",$Value);
return "http://www.example.com/search=".$Value;
}
else
{
// If the page exists, create the normal link.
return $FullUrl;
}
}
这是我创建网址的常规方法:
<?php url('path/to/page'); ?>
我刚考虑过这种方法。这很棒,因为即使用户没有点击链接,它也可以让你找到丢失的页面。感谢您让我考虑一下,现在我将在我的页面中使用它(:
另一个“更简单”的方法(如果你不包装链接)是你存储在$_SESSION['lastpage'];
和$_SESSION['lastlastpage'];
中访问的最后几页,如果找到404则存储相应的页面用户试图访问损坏的页面。这不是一个完美的解决方案,因为你必须在上一页中手动找到断开的链接,但至少它可以让你知道它在哪里。
缺点:如您所见,两种解决方案仅适用于内部断开的链接。
答案 2 :(得分:-4)
似乎没有办法。