Страницы

Поиск по вопросам

пятница, 7 июня 2019 г.

Получение данных из URL после знака # (hash) на сервере

Доброго времени суток Друзья! Продолжаю писать свою CMS систему, среди её "фишек" будет функция перехода в режим "быстрой навигации". Режим быстрой навигации, это по сути реализация системы клиент -><- сервер : Клиент заходит на сайт, обработчик на сервере принимает запрос вида "?m:s;p:h;i:1;", генерирует каркас(шаблон) и отдаёт. Клиент получив каркас, отправляет новый запрос(Ajax) на сервер и заполняет принятыми в ответ данными необходимые поля. Слишком растянул вступление для вопроса, но хотелось бы по лучше объяснить, что же я хочу узнать. При переходе по следующей ссылке : mysite.ru/?m=s&p=h&i=1 сервер получит эти данные через суперглобальный массив $_GET При переходе по следующей ссылке : mysite.ru/#m:s;p:h;i:1; серверу необходимо получить данные после знака решётки(#). Всё бы ничего, есть вариант использовать Javascript и с помощью браузера передать эти данные на сервер, но есть одно "но", а если эту ссылку открыл не браузер, а например поисковый робот? И тут собственно возникает вопрос : Как на сервере только средствами PHP получить данные из URL после знака решётки(#) ? Использовать функцию parse_url() можно, но она позволяет обработать строку запроса, а не получить её. В интернете по этому поводу мало информации, а где то ещё и видел, что средствами только PHP сделать этого нельзя. Есть сервис от Яндекс, Яндекс.Музыка, там реализовано аналогичное. Хочу дополнить свой вопрос : А можно ли с помощью Javascript превращать текущий URL в URL вида "?m:h;......." при этом не переходя на него, хотелось бы как то всётаки реализовать такую совместимость и для поисковика, и для пользователя, который захочет взять ссылку себе на заметку.


Ответ

Судя по всему такое всё-таки невозможно. Понимаю, меня тоже такой ответ не устраивает, но был опыт поиска решения. Сервер просто не получает хэш. Так что только яваскриптом его отдельно отправлять. Для поисковых роботов и прочих безяваскриптовых существ должны быть адреса вида mysite.ru/m:s;p:h;i:1;, по которым доступна та же самая информация без аякса.

Комментариев нет:

Отправить комментарий