Статьи

Не забывайте перенаправления!

Я посетил мою систему онлайн-банкинга сегодня. Вот что появилось:

	 не обнаружена

Это было текстовое сообщение — даже не HTML. Я использовал один и тот же URL-адрес как минимум десять лет, поэтому был слегка встревожен. К счастью, я немного разбираюсь в этой веб-малярии и вскоре нашел нужную страницу. Как бы справились менее технические пользователи?

Я не буду называть компанию, о которой идет речь, но это один из крупнейших банков Великобритании, и он пострадал во время кредитного кризиса (по общему признанию, это не сильно уменьшает возможности) . Я подозреваю, что их телефон доверия был завален смущением и паникой клиентов, неспособных оплатить свои счета. Так не должно быть, и небольшое предварительное планирование могло бы предотвратить сотни потерянных часов поддержки.

Изменения неизбежны

Хорошие URL никогда не должны меняться, но …

… не имеет значения, сколько мыслей или планирования ушло на вашу страницу и структуры URL — они в конечном итоге изменятся Технологические улучшения будут иметь влияние. Новые функции будут реализованы. Менеджеры будут заниматься легкомысленной борьбой за власть. SEO-консультанты будут ругать ваши ключевые слова. Новые разработчики решат, что ваши идеи были ошибочными. Вы будете думать о лучших путях.

Причины не имеют значения: ваши URL будут изменены .

Стратегия переключения

Некоторые клиенты предполагают, что пользователи будут добавлять в закладки только свою домашнюю страницу. На самом деле тысячи пользователей могли добавить в закладки любую из ваших страниц. Два из них — это роботы Google и Bing, которые пытаются проиндексировать все. Если у вас нет бюджета для решения этой проблемы, обновление вашего сайта не завершено! К счастью, процесс не сложный…

1. Определите ваши 404
Первый шаг: определите, когда страница не может быть найдена — никогда не полагайтесь на стандартные 404 страницы вашего веб-сервера.

Это должно быть легко, если вы направляете все запросы через один контроллер. Если нет, вы можете перенаправить на страницу обработки ошибок, используя файл Apache .htaccess или эквивалентный для вашего сервера, например

errordocument 404 /error.php

2. Перенаправить, если это возможно
Теперь вам нужно извлечь страницу, к которой пытается получить доступ пользователь, и сопоставить ее с новым URL-адресом. Как это будет достигаться, будет зависеть от сложности и размера вашего сайта, например

  1. В простых случаях может быть возможным использовать строковые замены или регулярные выражения, например / oldsite / * отображается непосредственно в / newsite / *.
  2. На больших сайтах с радикальными изменениями URL вам может потребоваться таблица базы данных для хранения однозначного сопоставления всех старых страниц с новыми.

Для большинства сайтов я бы предложил достаточно простой компромисс для определения наиболее важных перенаправлений, используя ключевые термины в URL, например, в PHP:

 <?php
// requested URL
$addr=strtolower($_SERVER['REQUEST_URI']);

// redirects
$redir = array(
	'contact' => '/about/contact-us',
	'mail' => '/about/contact-us',
	'about' => '/about',
	'term', => '/terms-and-conditions',
	'service', => '/services'
);

// redirect if possible
foreach ($redir as $old => $new) {
	if (strpos($addr, $old) !== false) {
		header('HTTP/1.1 301 Moved Permanently');
		header('Location: ' . $new);
		exit;
	}
}

Это также можно использовать для реализации псевдонимов URL, например, в приведенном выше примере пользователь, введя http://site.com/email, будет перенаправлен на контактную информацию, даже если страница «электронной почты» никогда не создавалась.

3. Журнал сбоев перенаправления
Вы можете пропустить некоторые старые URL-адреса, когда новый сайт будет запущен. Обычно 404 ошибки будут записываться в файлы журнала вашего сервера, но я рекомендую записать запрошенный URL-адрес в отдельный текстовый файл или базу данных для облегчения проверки. Если вы хотите кого-то раздражать, отправляйте по электронной почте все сообщения об ошибках непосредственно им — они скоро потребуют лучшей системы перенаправления.

4. Улучшите страницу с ошибкой
Если ничего не помогает, отправьте заголовок 404 и откройте простую для понимания страницу ошибки. Объясните, что запрашиваемая страница недоступна и может быть перемещена в другое место. Будьте полезны и отображайте карту сайта и / или ссылки на популярный контент.

Я надеялся, что к 2013 году большинство сайтов применят эти простые правила на практике. Даже одно перенаправление на домашнюю страницу предпочтительнее, чем «Не найдено». Я предполагаю, что мой банк никогда не получал записку? Или, может быть, у них закончились деньги? Извините, пока я забираю свои сбережения…