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

136
Vistas
Reescribir Eliminar enlace Href

He estado luchando con esta regla de reescritura durante unos días, he buscado aquí y probé muchas reglas de reescritura diferentes. No estoy seguro de lo que me estoy perdiendo.

esta es mi solicitud de PHP a la base de datos.

 <?php if (isset($_GET['delete'])){ $ServerID = $_GET['delete'] ; $db = dbconnect(); $stmt = $db->prepare("DELETE FROM servers WHERE ID = $ServerID"); $stmt->execute(); $stmt->close(); } ?>

Mi enlace HTML que elimina el registro para mí

 <a href="servers.php?delete='.$ServerID.'">Delete</a>

y cuando pasa el cursor sobre el enlace anterior, se muestra de la siguiente manera

 http://example.com/servers.php?delete=12

en mi .htaccess usé el script para eliminar el .php al final y usé la siguiente regla de reescritura

 RewriteRule ^servers/delete/(\d+)$ servers.php?delete=$1 [NC,L]

y luego cambié mi enlace HTML a lo siguiente

 <a href="servers/delete/'.$ServerID.'">Delete</a>

ahora, cuando muevo el enlace, puedo ver que vuelve a escribir la cadena en esto

 http://example.com/servers/delete/12

pero cuando hago clic en él, no elimina el registro, muestra una URL como una página cuando todo lo que debería hacer es eliminar el registro

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

0

De acuerdo con su comentario a la pregunta, aprendió del archivo de registro de errores del servidor http que el problema real es un bucle de reescritura que creó con su regla de reescritura.

La regla real que implementó está perfectamente bien. Pero debe tener cuidado de que solo se aplique si la solicitud no apunta al objetivo de reescritura:

 RewriteEngine on RewriteCond %{REQUEST_URI} ! /servers\.php$ RewriteRule ^servers/delete/(\d+)$ servers.php?delete=$1 [NC,L]

Sin embargo, un enfoque mucho más fácil sería usar el indicador END en lugar del indicador L anterior en la regla misma:

 RewriteEngine on RewriteRule ^servers/delete/(\d+)$ servers.php?delete=$1 [NC,END]

Consulte la documentación del módulo de reescritura para comprender la diferencia: https://httpd.apache.org/docs/current/mod/mod_rewrite.html

Y una observación general: siempre debe preferir colocar tales reglas en la configuración del host de los servidores http en lugar de usar archivos de configuración distribuidos (".htaccess"). Esos archivos de configuración distribuidos agregan complejidad, a menudo son la causa de un comportamiento inesperado, difíciles de depurar y realmente ralentizan el servidor http. Solo se proporcionan como última opción para situaciones en las que no tiene acceso a la configuración de host de los servidores http reales (léase: proveedores de servicios realmente baratos) o para aplicaciones que insisten en escribir sus propias reglas (lo que es una pesadilla de seguridad obvia).

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