Страницы

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

четверг, 19 марта 2020 г.

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

#url #ajax #php #сервер


Доброго времени суток Друзья! Продолжаю писать свою 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;......."
при этом не переходя на него, хотелось бы как то всётаки реализовать такую совместимость
и для поисковика, и для пользователя, который захочет взять ссылку себе на заметку.    


Ответы

Ответ 1



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

Ответ 2



Как на сервере только средствами PHP получить данные из URL после знака решётки(#) ? Никак, якоря являются свойством локальной HTML-страницы и не передаются PHP-скрипту в любом случае.

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

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