
Estudié todas las publicaciones excelentes sobre el proxy nginx y la funcionalidad de reescritura, pero no pude encontrar una solución para mi problema. Aqui estamos. Escribí una aplicación web con vaadin, que puede manejar la siguiente solicitud:
http://<server>/#main/search?country=germany&type=songwriter
Para la optimización SEO, quiero manejar URL "parlantes", como: http:///songwriter/germany. Entonces pensé que reescribir la URL dentro del servidor web es la solución. Pero por mucho que lo intenté, ¡no puedo colocar el hashtag dentro de la solicitud y formar la solución final! Esto es lo que probé:
location /songwriter/ {
proxy_set_header Host $host;
proxy_redirect off;
# Option 1 - hastag is encoded
rewrite ^/songwriter/(.+) /#main/suche?land=$1 break;
proxy_pass http://127.0.0.1:8080;
}
Lo que obtengo en el seguimiento es: /%23main/suche land=berlin/. ¿Alguna idea?
Respuesta1
El fragmento de URL es sólo del lado del cliente y nunca se envía al servidor. (Debido a que el literal #
no está permitido allí, la URL nginx lo codifica). Si su aplicación web abusa de los fragmentos de URL para la navegación, entonces solo pueden ser manejados por el código del lado del cliente (en el navegador). Tenga en cuenta que utilizar fragmentos de URL de esta manera no se considera una buena práctica. Probablemente tendrá que reescribir significativamente su aplicación web para deshacerse de ellos.