Удаление looping redirects

Главные вкладки

Аватар пользователя ttenz ttenz 10 февраля 2015 в 9:46

Есть очень неприятная проблема, когда на сайте появляется запись: "Oops, looks like this request tried to create an infinite loop. We do not allow such things here. We are a professional website!". Вроде ничего страшного, но страшно раздражает пользователей.

Как избавиться от старых редиректов?

Пишем небольшой drush скрипт:

<?php
// Set up the query using the database API
$query db_select('redirect''r');
$query->join('url_alias''ua''r.redirect = ua.source AND r.source = ua.alias');
$query->fields('r', array('rid''redirect''source'));
 
// Execute it and fetch the results, one by one
$result $query->execute();
$any_results FALSE;
while(
$r $result->fetchAssoc()) {
  
// For each result, flag we've got at least one result, notify the CLI user
  // of what we're doing, and delete it using Redirect's own API
  
$any_results TRUE;
  
drush_log(dt("Deleting unwanted redirect !r (!s -> !t)",
    array(
"!r" => $r['rid'], "!s" => $r['source'], "!t" => $r['redirect'])), "success");
  
redirect_delete($r['rid']);
}
 
// No results? Report if that's the case
if (!$any_results) {
  
drush_log(dt("Nothing to delete!"), "ok");
}
?>

Сохраняем переходим в директорию нашего сайта и запускаем:

drush php-script [ПУТЬ_К_СКРИПТУ]

Вуа-ля, все лишние редиректы удалены!

Комментарии