URL-адрес PHP & Hash / Fragment URL-адреса

Я пытаюсь найти способ сохранить хэш-часть URL-адреса и как переменную PHP. Эта идея немного странная, но неся со мной …

Я хотел бы извлечь фрагмент «location» из следующего URL-адреса и сохранить его как переменную PHP.

http://www.example.com/#location 

Однако обсуждение по этой ссылке указывает, что фрагмент URL-адреса доступен только через JavaScript.

Но можно ли создать ссылку, в которой фрагмент дублируется в URL-адресе, анализируется PHP, а затем удаляется с помощью mod rewrite? Так….

Оригинальный URL:

 http://www.example.com/location/#location 

PHP получает переменную местоположения благодаря простому «местоположению» в URL-адресе

Затем Apache переписывает ссылку на:

 http://www.example.com/#location 

Мне любопытно узнать, есть ли элегантный способ решить эту проблему.

Для этого вам нужно использовать Javascript. Существует несколько различных вариантов – при загрузке страницы вы можете использовать XmlHTTPRequest (запрос AJAX), чтобы сообщить серверу, какие были дополнительные параметры URL. В Alternatley вы можете проверить, есть ли дополнительные параметры (также через Javascript), и если вы найдете их, отправьте обратно на другой URL-адрес, который имеет эти параметры, закодированные в самом URL-адресе.

Фрагмент никогда не отправляется на сервер, согласно этой теме на форумах Mod_Rewrite. Таким образом, это может быть невозможно, если вы не используете AJAX для изменения страницы после факта.

Другая идея заключалась бы в том, чтобы Javascript превратил хэш в параметр $ _GET, а затем обновил страницу.

вы можете отправить хэш-фрагмент с помощью скрипта AJAX в PHP и выполнить немедленное обновление (перезагрузка страницы)

После отправки значений на сервер через AJAX. Вы можете установить значения фрагментов в SESSION. Когда вы обновляете страницу, вы можете получить фрагмент, который был установлен в сеансе и обработать, затем отобразить соответствующий контент. Потому что мы не можем получить значения фрагментов через PHP_SELF / QUERY_STRING и т. Д. Нам нужно это, чтобы увеличить скорость нашей веб-страницы, такой как Gmail.

Он содержится в значении «фрагмент», возвращаемом функцией PHP parse_url .

Из руководства по PHP:

 <?php $url = 'http://username:password@hostname/path?arg=value#anchor'; print_r(parse_url($url)); echo parse_url($url, PHP_URL_PATH); ?> 

Вернется:

 Array ( [scheme] => http [host] => hostname [user] => username [pass] => password [path] => /path [query] => arg=value [fragment] => anchor ) /path