Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

214
Views
.htaccess Abre la página principal si el archivo o la carpeta no existe, pero mantén la URL + enrutamiento de URL

Leí muchos temas similares, pero no encontré la respuesta correcta, así que por favor ayúdenme.

Digamos que el usuario escribe en un subdirectorio que no existe en mi página web:

 www.example.com/subpage-1

Lo que quiero lograr:

Quiero que se abra mi página principal ( www.example.com , en realidad con index.html oculto), pero mantengo la URL sin cambios con la subpágina que no existe ( www.example.com/subpage-1 ).

La razón por la que lo necesito: tengo el sitio web solo con el sitio principal ( index.html ), y todo se controla dinámicamente a través de JavaScript.

Quiero introducir subpáginas, pero quiero usar solo mi sitio index.html principal con JS para controlarlo. (Al igual que una aplicación de una sola página).

Entonces, cuando el usuario ingresa la URL www.example.com/subpage-1 , mi sitio principal se abre, pero dado que la URL se mantiene sin cambios, el script JS puede verificar la URL, ver que se solicita la subpage-1 y generar el contenido adecuado para él (si se admite subpage-1 , por supuesto).

También podría ser una solución compatible con SEO, ya que también podría proporcionarle a Google un mapa del sitio con las subpáginas disponibles; sin embargo, todo se controlaría a través del mismo index.html y JS.

¿Cómo puedo lograrlo?

Lo que encontré hasta ahora:

 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)$ index.html?url=$1 [QSA,L]

Mi problema con esto es que abre la página principal cada vez, no puedo encontrar la consulta ( ?url= ) en ningún lado, así que no puedo usarla.


También hay un problema que no sé cómo manejar: digamos que el usuario ingresa a www.example.com/subpage-1 y funciona bien ya que mi script JS maneja "subpage-1".

Pero que si

 www.example.com/non-existing-subpage

¿es ingresado? Con la solución anterior, abriría la página principal nuevamente, pero JS no puede cargar ningún contenido. Todavía quiero 404 para todas las subpáginas no existentes. ¿Cómo puedo lograrlo?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)$ index.html?url=$1 [QSA,L]

Mi problema con esto es que, sin embargo, abre la página principal cada vez, no puedo encontrar la consulta (? Url =) en ningún lado, por lo que no puedo usarla.

Esta es una reescritura interna en el servidor . En consecuencia, el parámetro url URL (presente solo en la reescritura interna) solo está disponible para un script del lado del servidor, no para JavaScript del lado del cliente. El navegador/cliente solo ve la respuesta del servidor; no sabe qué archivo produjo esa respuesta. Sin embargo, JavaScript del lado del cliente puede ver lo que está presente en la barra de direcciones del navegador, a la que se puede acceder a través del objeto window.location .

Entonces, en su lugar, puede simplificar la directiva RewriteRule :

 RewriteRule . index.html [L]

Y en su JS puede leer la ruta URL solicitada desde la propiedad window.location.pathname . Por ejemplo, si solicita example.com/foo , la propiedad de nombre de pathname contiene /foo (con un prefijo de barra inclinada) para que pueda actuar en consecuencia en su secuencia de comandos.

Todavía quiero 404 para todas las subpáginas no existentes. ¿Cómo puedo lograrlo?

No puede si solo está utilizando JavaScript del lado del cliente. Un estado "404 No encontrado" es una respuesta HTTP enviada desde el servidor.

Lo mejor que puede hacer en JS del lado del cliente es mostrar lo que parece un mensaje "404 No encontrado" al usuario y asegurarse de tener una metaetiqueta de robots que evite la indexación. Pero esto todavía se sirve con un estado HTTP 200 OK. Los motores de búsqueda (es decir, Google) probablemente verán esto como un 404 suave (es decir, una página que parece un 404, pero se sirve con un estado 200 OK).

Si desea proporcionar un estado de respuesta HTTP 404, el servidor deberá saber cuáles son las URL válidas/inválidas.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!