Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

278
Vistas
Reescritura de .htaccess: eliminar todas las extensiones

Me gustaría hacer una regla de reescritura que elimine todas las extensiones, independientemente del nombre del archivo.

  • https://example.com/filename.extension de archivo.extensión -> https://example.com/filename de archivo

por ejemplo:

  • https://example.com/horses.txt -> https://example.com/horses
  • https://example.com/icecream.json -> https://example.com/icecream

Lo intenté:

 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)\.*$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ *? [QSA,L] </IfModule>

no funciona como debería

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Solo puede hacer razonablemente lo que está pidiendo con MultiViews .

Por ejemplo, tan simple como:

 Options +MultiViews

Debe eliminar sus directivas mod_rewrite existentes.

Ahora, una solicitud para example.com/horses se enrutará correctamente a /horses.txt , o cualquier extensión de archivo que esté utilizando. MultiViews usa mod_negotiation.

Esto no es tan fácil de hacer con mod_rewrite, ya que necesita probar cada extensión de archivo para determinar en qué archivo necesita volver a escribir para enrutar la solicitud correctamente. p.ej. ¿Debe una solicitud para example.com/horses dirigirse a /horses.txt o horses.jpg ? MultiViews hace esta comparación por usted.

Me gustaría hacer una regla de reescritura que elimine todas las extensiones

Aunque, en realidad debe eliminar la extensión del archivo en la fuente HTML. Esto no es algo que haga en .htaccess , a menos que necesite conservar el SEO o los vínculos de retroceso que ya se han vinculado a las URL antiguas.

ACTUALIZACIÓN: Quizás no fui lo suficientemente claro, me gustaría que la URL se muestre sin la extensión, incluso si está vinculada a ella, o que vaya a ese archivo si está vinculada sin la extensión.

Bueno, debe eliminar la extensión de archivo en todos sus enlaces internos. Puede emitir un "redireccionamiento" en .htaccess para eliminar la extensión en beneficio de los motores de búsqueda y los enlaces de terceros, pero si confía en esto para sus enlaces internos, potencialmente ralentizará a los usuarios y a su sitio, ya que está duplicando el número. de solicitudes que llegan a su servidor.

Para eliminar la extensión de archivo para solicitudes directas (SEO/enlaces de terceros), puede hacer algo como esto:

 RewriteEngine On RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^([^.]+)\.[\w]{2,4}$ /$1 [R=302,L]

Esto supone que el único punto en la ruta de la URL es el que delimita la extensión del archivo.

La parte difícil es volver a escribir internamente la solicitud en el archivo subyacente con una extensión; ahí es donde entra MultiViews (primera parte de mi respuesta).

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda