VAS63>> У меня, например, все в порядке, сразу переводит на указанные Вами сообщения
sam7> Ну, и простое доказательство - какая картинка и имя юзера указана в ссылке на мой пост?
Неудачный (для ошибки — потому что именно работающий как надо) пример.
Интересно, дойдут ли у меня руки FAQ сделать? Раз в третий уже расписываю. Или найдётся ли человек, который такой FAQ сделает из моих объяснений?
Это не программировать, это просто скопипастить…
В общем, очередное (самое) развёрнутое объяснение.
Сперва — о структуре самих ссылок в браузерах. Любая ссылка состоит из двух частей (т.е. больше, но нам тут важны именно эти две) — собственно, URL документа, по которому браузер получает страницу с сервера и «анкор»/«якорь» — позиция скроллинга внутри полученной страницы. Разделяются они решёткой. Т.е.:
_http://www.balancer.ru/support/2013/10/t59483,148--musor.6517.html#p3259945
Тут
синий — это URL,
зелёный — позиция внутри страницы, в которую должен перейти браузер после загрузки.
Теперь о форуме. Ссылку на сообщение можно дать двумя способами:
1. Тупо скопировать содержимое адресной строки браузера. Где адрес будет выглядеть именно как _http://ссылка#позиция.
2. Скопировать ссылку на сообщение из его шапки, под ником автора. Вид ссылки будет _http://www.balancer.ru/g/p3259945
Первый случай некорректен как в общем случае — например, если сообщение перенесут в другой топик, то ссылка на него потеряется. Браузер загрузит
старый топик (ибо именно его адрес, а не сообщения, указан в ссылке), а потом попытается перейти к уже не существующему номеру позиции. Опаньки, а такой нет. Покажет страницу с начала. Точно также ошибка получится, если было изменение с числом сообщений на предыдущих страницах (из этой темы перенесли в другую или наоборот) — ссылка привязана к номеру страницы и, если сообщение окажется на странице с другим номером, то постинг по старому адресу найти уже будет нельзя.
Некорректен этот способ и в частном случае — чистый уже баг, парсер форума сжирает в ссылках анкоры. Часть после «#» пропадает.
А вот во втором случае у нас фигурирует точная ссылка именно на сообщение. Сервер, получив такую ссылку, найдёт, какому сейчас топику принадлежит постинг и вернёт браузеру точную новую ссылку с анкором, на которую тот и перейдёт. Для пользователя этот лишний переход (редирект) остаётся незаметным, так как промежуточные данные никак не отображаются, просто кликнул по ссылке _http://www.balancer.ru/g/p3259945, а открылась — _http://www.balancer.ru/support/2013/10/t59483,148--musor.6517.html#p3259945
Баг, конечно, надо чинить, но и обойти его легко — всего лишь надо давать правильную ссылку, копируя её из шапки сообщения. Тем более, что даже после устранения бага ссылки из адресной строки не станут корректными и будут ошибаться при манипуляциях с сообщениями темы.