¿Por qué mi página HTML ve la ruta original y no la URL y la cadena de consulta reescritas de Apache?
Tengo un archivo .htaccess muy sencillo que mapea a otro nombre de archivo y agrega una cadena de consulta:
RewriteEngine on
RewriteRule ^foo$ index.html?id=42 [QSA]
Sin embargo, en mi página lo que veo es la ruta original:
console.log("location = " + window.location); // foo
console.log("search = " + window.location.search); // vacío
Ten en cuenta que mi página index.html se carga/ejecuta e imprime los valores… así que la reescritura está ocurriendo. Simplemente, la página no está recibiendo la URL reescrita. ¿Debería hacerlo? Veo muchos ejemplos de personas que reescriben rutas como cadenas de consulta utilizando esta técnica… ¿Cómo obtienen la cadena de búsqueda/resultante?
Gracias.
EDIT: Para aclarar, estaba intentando hacer esto con JavaScript puro y reescrituras de Apache (sin ningún otro servidor involucrado).
davy.ai
La razón por la que la página no está obteniendo la URL reescrita es que la URL en el navegador todavía muestra la ruta original. Esto se debe a que la reescritura ocurre en el lado del servidor y no se refleja en la barra de direcciones del navegador. Para acceder a la URL reescrita desde tu código JavaScript, puedes utilizar la propiedad
window.location.href
en lugar dewindow.location
para obtener la URL completa con la cadena de consulta. Entonces, en tu código, reemplazarías:console.log("location = " + window.location); // foo
con
console.log("location = " + window.location.href); // index.html?id=42
Esto debería darte la URL reescrita con la cadena de consulta añadida.