Это невозможно, поскольку клиенты не отправляют "якорную часть" на сервер
Например, вот точный запрос, сгенерированный Chrome после отправки http://example.com/#foobar
(записанный с помощью Wireshark):
GET / HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.223.11 Safari/532.3
Cache-Control: max-age=0
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
If-None-Match: "b300b4-1b6-4059a80bfd280"
If-Modified-Since: Tue, 15 Nov 2005 13:24:10 GMT
Видите, нет #foobar. Так что серверное приложение никак не сможет его прочитать.
Вы можете использовать магию JavaScript, чтобы сохранить привязку в файле cookie, в скрытом поле ввода или в любом другом вуду. Но это никогда не будет работать для запросов, которые не исходят от ваших собственных сайтов. Проще сделать все, что вам нужно, в серверной части строки запроса и использовать привязку только для задач только для JavaScript - или использовать ее для навигации внутри простого HTML-документа - но это так, 90-е годы;).
Вот важная часть из упомянутого RFC 1808:
Обратите внимание, что идентификатор фрагмента (и "#" перед ним)
не считается частью URL. Тем не менее, так как он обычно используется
в том же строковом контексте, что и URL, парсер должен иметь возможность
распознать фрагмент, когда он присутствует, и отложить его как часть
процесс разбора.