Esto no es posible ya que los clientes no envían la "parte ancla" al servidor
A modo de ejemplo, aquí está la solicitud exacta que Chrome genera después de la presentación de http://example.com/#foobar
(grabado usando 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
See, no #foobar. Entonces no hay forma de que una aplicación de servidor pueda leerlo.
Puede hacer algo de magia de JavaScript para almacenar el ancla en una cookie o en un campo de entrada oculto o en cualquier vudú en el que se encuentre. Pero nunca funcionará para solicitudes que no se originen en sus propios sitios. Es más sencillo hacer lo que necesite en el servidor como parte de la cadena de consulta y usar el delimitador solo para tareas solo de JavaScript, o usarlo para navegar dentro de un documento HTML simple, pero eso es tan 90s;).
Aquí es la parte importante de la mencionada RFC 1808:
Tenga en cuenta que el identificador de fragmento (y el "#" que le precede) es parte no se considera de la URL. Sin embargo, dado que se usa comúnmente dentro del mismo contexto de cadena como una URL, un analizador debe ser capaz de reconocer el fragmento cuando está presente y dejarlo de lado como parte de el proceso de análisis sintáctico.
Aquí hay una pregunta similar para PHP, con una respuesta similar al upvoted: http://stackoverflow.com/questions/1032242/how-to-obtain-anchor-part-of-url-after-in-php –