发送404文件未找到标题,然后提供备用文件供下载

时间:2015-01-05 17:01:42

标签: php .htaccess redirect

我有一个文件,其中包含文件名中的版本号,并且几乎每个月都会更新。(对于需要正常工作的其他软件,版本号是必需的。)
为了方便用户,使用旧版本号发布链接也是可行的,我编写了一个php脚本,它使用301标题进行重定向,并提供最新文件以及当前版本号以供下载。

现在我在日志文件中发现旧版本号的旧链接保存在搜索引擎的索引中,并且越来越多的是他们要求旧文件(网址),甚至是301重定向,他们不会更新存储的链接,并反复询问旧文件。
阅读一段时间后,我发现将它们从索引中取出的唯一方法是发送404或410标题,但另一方面,它似乎不允许我发送带有该标题的文件。


所以问题是你是否有机会发送404或410标题来获取远离搜索引擎索引的旧链接,同时提供最新的文件供下载使旧链接仍然可以让用户感到舒适? / p>

1 个答案:

答案 0 :(得分:1)

您可以结合使用meta http-eqiv属性和JavaScript来完成 browsers 的请求。此方法不适用于wgetcurl或其他此类自动程序。

<!doctype html>
<html>
  <head>
    <title>File not found</title>
    <meta charset="utf-8"/>
    <meta http-equiv="refresh" content="5;URL=http://somedomain.tld/file_v1.txt"/>
  </head>
  <body>
    <p>The requested resource does not exist. However, an older version of the file was found and will begin downloading in <span id="countdown">5</span> seconds.</p>
    <p>Please <a href="http://somedomain.tld/file_v1.txt">click here</a> if the download does not begin or you no longer wish to wait.</p>
    <script>
    // you can get #countdown and using setInterval decrease the seconds to enhance the user experience
    // additionally, you can use `window.location.href = "http://somedomain.tld/file_v1.txt";` at 0 seconds
    // incase the user has meta redirects disabled
    </script>
  </body>
</html>