es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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).

Tags:  ,

Answer

  1. Avatar for 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 de window.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.

Comments are closed.