Отменить
Этот сценарий просматривает страницы веб-сайта, проверяет каждый URL-адрес и при перенаправлении заменяет URL-адрес новым.
Это подходит и для сайтов, которые переходят с HTTP на HTTPS, это обновляет ссылки, как на самом сайте, так и на всех остальных связанных сайтах.
Он также отображает нарушенные ссылки и для статических узлов заменяет инструмент тестирования ссылок, такой как Link Checker на этом сайте.
Код
Программа использует класс DOMDocument PHP для поиска ссылок в тегах <a> или изображениях. Но он также использует функцию file_get_contents (), чтобы загрузить файл как необработанный текст.
Программа использует Curl, чтобы проверить, перенаправляется ли связь, а затем найти окончательный адрес перенаправления.
Функция str_replace используется для замены перенаправленных URL-адресов (а не setAttribute). Затем содержимое сохраняется с помощью file_put_contents ().
Использование этих альтернативных функций позволяет избежать использования метода saveHTMLile, который пытается восстановить HTML-содержимое перед сохранением файла. Потому что после этого добавляются теги, которые уже могут находиться в файле php.
Код PHP теста перенаправления:
function redirected($url)
{
$hcurl=curl_init();
curl_setopt($hcurl, CURLOPT_CONNECTTIMEOUT, 300);
curl_setopt($hcurl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($hcurl, CURLOPT_VERBOSE, false);
curl_setopt($hcurl, CURLOPT_URL, $url);
curl_setopt($hcurl, CURLOPT_HEADER, true);
curl_setopt($hcurl, CURLOPT_NOBODY, true);
curl_setopt($hcurl, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($hcurl, CURLOPT_SSL_VERIFYPEER, false);
$headers = curl_exec($hcurl);
$code = curl_getinfo($hcurl, CURLINFO_HTTP_CODE);
if($code!=301)
{
curl_close($hcurl);
return "";
}
curl_setopt($hcurl, CURLOPT_FOLLOWLOCATION, true);
$headers = curl_exec($hcurl);
$newurl = curl_getinfo($hcurl, CURLINFO_EFFECTIVE_URL);
$code = curl_getinfo($hcurl, CURLINFO_HTTP_CODE);
curl_close($hcurl);
if($code!=200)
{
return "";
}
return $newurl;
}
Руководство по эксплуатации
Откройте консоль командной строки, перейдите в каталог, содержащий обновляемые страницы сайта. Введите:
php c:/unredir/unredir.php [options]
Замените в команде указанный выше каталог на тот, где вы установили unresh.
Возможны два варианта:
-t тест, проверить результат без изменения файлов.
-v, просмотр всех отсканированных страниц.
Загрузка
Версии:
- 24 марта 2021 года: Добавлен подсчет разорванных связей .
См. также...
Преобразование HTTP в HTTPS. Этот сценарий заменяет http-ссылки на https для определенного домена. Он дополняет его, поскольку также меняет ссылки в тексте. Но он учитывает перенаправления только для указанного домена.