У меня есть файл, который содержит номер версии в имени файла и обновляется почти каждый месяц. (Номер версии необходим для другого программного обеспечения, для которого это необходимо для правильной работы.)
Чтобы сделать опубликованные ссылки со старым номером версии также работоспособными, для удобства пользователей я написал скрипт php, который выполняет перенаправление с заголовком 301, и предоставляет последний файл с текущим номером версии для загрузки.
Теперь я нашел в файле журнала, что старые ссылки со старым номером версии, хранящиеся в индексе поисковых систем, и все больше растут, что они aks для старых файлов (urls), и даже с 301 перенаправлением они не обновляют сохраненные ссылки и снова и снова запрашивать старые файлы.
Прочитав некоторое время, я обнаружил, что единственный способ получить их из индекса - отправить заголовок 404 или 410, но, похоже, с другой стороны, это не позволяет мне отправлять файл с этим заголовком.
Таким образом, возникает вопрос, не видите ли вы, как я могу отправить заголовок 404 или 410, чтобы удалить старые ссылки с индексов поисковых систем и в то же время предоставить последний файл для загрузки, чтобы старые ссылки все еще работали для удобства пользователя?
Вы можете использовать комбинацию атрибута meta http-eqiv и JavaScript для разрешения запросов от браузеров. Этот метод не будет работать для wget
, curl
или других таких автоматизированных программ.
<!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>