Привет всем! Я работаю над новой фотогалереей и столкнулся с интересной проблемой. Мне нужно создать постоянные ссылки на каждое фото, при этом меняя изображение.
Изначально я думал использовать хэш в URL, например так:
#?pid=1212918
Но потом я заметил, что Facebook как-то умудряется менять URL без использования хэша. Это меня очень удивило!
Кто-нибудь знает, как это можно реализовать? Есть ли какие-то современные способы изменения URL без хэша?
P.S. Я заметил, что в IE (без поддержки HTML5) Facebook все-таки использует хэш. Может быть, они применяют серверную перезапись URL, если пользователь заходит с хэшем?
Для изменения URL без хэша можно использовать History API, в частности метод pushState(). Это позволяет менять URL без перезагрузки страницы.
Примерно так:
history.pushState(null, '', '/новый-url');
Но учтите, что при этом нужно обрабатывать навигацию по истории браузера (событие popstate).
Для IE можно сделать фолбэк на хэш. А на сервере настроить редирект с URL с хэшем на обычный URL.
Такой подход дает хорошие SEO-friendly URL и работает во всех современных браузерах.
слушай, а ты не думал использовать пушстейт из истори апи? это реально крутая штука для твоей задачи. я недавно делал похожий проект, и это отлично сработало. можешь менять урл без перезагрузки, а для старых браузеров сделать фолбек на хеши. главное не забудь обработать навигацию по истории, а то юзеры запутаются. и еще совет - подумай про ссылки для шаринга, чтобы они открывались корректно. удачи с галереей!
А может попробовать AJAX? Подгружаешь новое фото без перезагрузки, а URL меняешь через History API. Правда, надо будет еще обработку кнопок “Назад” и “Вперед” сделать. Но зато работает везде, кроме совсем старых браузеров. А им можно фолбэк на хэши оставить. Как думаешь, подойдет такой вариант для твоей галереи?