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

152
Vistas
Eliminación de la extensión agregada automáticamente en la URL

Cuando escribo: domain.com/contact

La página muestra automáticamente: domain.com/contact.php

Quiero que cuando un usuario domain.com/contact , la URL permanezca así y muestre el archivo contact.php . ¿Es posible?

Intenté agregar una línea Options -Multiviews al archivo htaccess, pero luego, cuando escribo contact , la página muestra un error 404.

Además, lo quiero solo para la php extension . Porque cuando el usuario escribe dominio.com/robots, no quiero que se muestre robots.txt, sino la página 404.

EDITAR: Mi archivo .htaccess actual no es nada especial, aquí está:

 RewriteEngine On Options -Indexes ErrorDocument 403 /404 ErrorDocument 404 /404
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Es evidente que sus URL sin extensión actualmente dependen de MultiViews (mod_negotiation). Sin embargo, no está claro de dónde proviene la redirección externa (que agrega la extensión .php a la URL que está viendo en la barra de direcciones). MultiViews no hace esto. Entonces, o tiene alguna otra lógica de aplicación que redirige para agregar la extensión o está viendo una respuesta en caché de una redirección anterior (errónea) (aunque si deshabilitar MultiViews da como resultado un 404, eso parece descartar el "caché") .

También es posible que tenga directivas en otro lugar (en la configuración del servidor) que podrían estar haciendo esto, después de todo, MultiViews debe haberse habilitado explícitamente en algún lugar; esto no está habilitado de manera predeterminada.

Además, lo quiero solo para la extensión php. Porque cuando el usuario escribe dominio.com/robots, no quiero que se muestre robots.txt, sino la página 404.

En ese caso, no puede usar MultiViews para administrar sus URL sin extensión. Debe usar mod_rewrite y reescribir internamente la URL en su lugar para apuntar específicamente a archivos .php únicamente.

Pruebe lo siguiente en su lugar:

 # Ensure that MultiViews is disabled Options -Indexes -MultiViews # Specify the actual file in the ErrorDocument, not simply "/404" ErrorDocument 403 /404.php ErrorDocument 404 /404.php RewriteEngine On # Rewrite extensionless URL to ".php" if it exists RewriteCond %{DOCUMENT_ROOT}/$1.php -f RewriteRule ^([^.]+)$ $1.php [L]

La expresión regular ^([^.]+)$ asume que sus URL sin extensión no contienen un punto. El único punto aparece antes de la extensión de archivo .php , que se omite en la solicitud. Esto permite que la directiva sea más eficiente y evite verificar recursos estáticos, etc. y, naturalmente, evitar volver a verificar la solicitud después de que se haya reescrito internamente para agregar la extensión .php (cuando corresponda).

Sin embargo, esto puede o no resolver el problema de redirección. Esto puede depender de cómo se active la redirección en primer lugar.


Como beneficio adicional, también puede redirigir las solicitudes directas de archivos .php para eliminar la extensión del archivo. Esto es necesario si está cambiando una estructura de URL existente donde la URL .php podría haber sido indexada por motores de búsqueda y/o vinculada por terceros externos.

Para hacer esto, agregaría la siguiente regla inmediatamente después de la directiva RewriteEngine y antes de la reescritura interna (que agrega la extensión).

 # Remove the ".php" extension on direct requests RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule (.+)\.php$ /$1 [R=301,L]

La condición que se compara con la variable de entorno REDIRECT_STATUS garantiza que solo verifiquemos las solicitudes directas del cliente y no las solicitudes reescritas por la directiva posterior.

Pruebe primero con una redirección 302 (temporal) para evitar posibles problemas de almacenamiento en caché.

Sin embargo, si el "problema de redireccionamiento" anterior aún no se ha resuelto, es probable que se produzca un bucle de redireccionamiento.

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