отправить 404 файл не найден заголовок, а затем предоставить альтернативный файл для загрузки

0

У меня есть файл, который содержит номер версии в имени файла и обновляется почти каждый месяц. (Номер версии необходим для другого программного обеспечения, для которого это необходимо для правильной работы.)
Чтобы сделать опубликованные ссылки со старым номером версии также работоспособными, для удобства пользователей я написал скрипт php, который выполняет перенаправление с заголовком 301, и предоставляет последний файл с текущим номером версии для загрузки.

Теперь я нашел в файле журнала, что старые ссылки со старым номером версии, хранящиеся в индексе поисковых систем, и все больше растут, что они aks для старых файлов (urls), и даже с 301 перенаправлением они не обновляют сохраненные ссылки и снова и снова запрашивать старые файлы.
Прочитав некоторое время, я обнаружил, что единственный способ получить их из индекса - отправить заголовок 404 или 410, но, похоже, с другой стороны, это не позволяет мне отправлять файл с этим заголовком.


Таким образом, возникает вопрос, не видите ли вы, как я могу отправить заголовок 404 или 410, чтобы удалить старые ссылки с индексов поисковых систем и в то же время предоставить последний файл для загрузки, чтобы старые ссылки все еще работали для удобства пользователя?

  • 0
    Вы уверены, что запросы приходят из результатов поиска? а не другие ссылки, которые могут не обновляться? большинство поисковых систем должны почитать / обновить 301.
  • 0
    да, я храню свои перенаправления в файле журнала, где я вижу, какой файл был запрошен, и user_agent, который показывает мне, что многие запросы поступают от поисковых систем
Показать ещё 3 комментария
Теги:
.htaccess
redirect

1 ответ

1

Вы можете использовать комбинацию атрибута 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>
  • 0
    основываясь на комментариях к OP, это, вероятно, ничего не даст, так как это Паук, а не браузер.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню