Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

137
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda