Переименование якоря без поломки внешних ссылок
- Опубликовано:
На качественном сайте внешние ссылки продолжают работать и спустя многие годы, даже если исходные URL-адреса изменились. URL-адрес может измениться по ряду причин, например:
- полное изменение схемы URL-адресов на всём сайте;
- замена мнемонического фрагмента «человекочитаемого» URL-адреса отдельной страницы на более удачный;
- перемещение страницы в другой раздел.
Для веб-страницы или файла это решается внешним перенаправлением (редиректом) с прежнего адреса на новый с помощью HTTP-заголовка ответа сервера Location
в сочетании с HTTP-статусом 301 Moved Permanently
.
Но что делать, если адрес изменился из-за переименования якоря (хэша)? Якоря основаны на использовании идентификаторов (атрибутов id
) элементов. Например, переход по ссылке #h-foo
автоматически прокрутит страницу к элементу с идентификатором h-foo
, если такой элемент есть на странице.
В атрибут id
можно поместить только один идентификатор. Поэтому при изменении идентификатора сохранить работоспособность старых ссылок можно созданием пустого семантически нейтрального элемента SPAN
с прежним идентификатором и вставкой его в начало исходного элемента:
- Было:
<h2 id="h-foo">Example</h2>
- Стало:
<h2 id="h-bar"><span id="h-foo"></span>Example</h2>
Благодаря этому ссылки на прежний якорь — #h-foo
— останутся работоспособными.