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

457
Vistas
RewriteRules en htaccess para una resolución de URL limpia y redirección de URL completa a URL limpia

Estoy trabajando en un proyecto de sitio web, www.experimonkey.com . En el directorio raíz, tengo directorios para experimentos, juegos, etc., que he estado sirviendo dinámicamente con php. Quiero limpiar las URL para que, en lugar de /experiments?eid=homemade-lava-lamp , por ejemplo, un usuario pueda ir a /experiments/homemade-lava-lamp . También me gustaría tener una redirección para que si un usuario va al enlace anterior, /experiments?eid=homemade-lava-lamp , sea redirigido al enlace limpio.

Pensé que había descubierto la primera parte del problema con el siguiente código en /experiments/.htaccess :

 RewriteEngine On RewriteRule ^([a-zA-Z0-9\-]+)/?$ index.php?eid=$1 [L]

Esto funciona para las páginas dinámicas; sin embargo, más tarde me di cuenta de que esto arruinaría los otros directorios reales en la carpeta /experiments . Por ejemplo, la dirección /experiments/submit (que en realidad es /experiments/submit/index.php ) redirige a /experiments/submit?eid=submit --por qué, no tengo idea.

Pero también, sin importar las combinaciones del siguiente código que probé (y todos los demás hilos y documentación que he leído), no pude obtener la URL anterior para redirigir a la URL limpia:

 RewriteCond %{QUERY_STRING} eid=(.+) RewriteRule .+ https://www.experimonkey.com/experiments/%1 [R=301]

Motor de reescritura encendido

Editar (casi funcionando)

Lo he resuelto hasta aquí. Ahora todo funciona en su mayoría, excepto que las dos últimas partes crean un bucle infinito y no estoy seguro de cómo solucionarlo.

 #Ignore existing directories and files unless has query string RewriteCond %{QUERY_STRING} !eid=(.*) RewriteCond %{REQUEST_FILENAME} -d [OR] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -l RewriteRule ^ - [L] #Redirect and remove query string RewriteCond %{QUERY_STRING} /?eid=(.*) RewriteRule (.*) https://www.experimonkey.com/experiments/%1? [R=301,L] #Rewrite internally to actual URL RewriteRule ^([a-zA-Z0-9\-]+)/?$ index.php?eid=$1 [L]
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Finalmente lo descubrí. Espero que esto pueda ayudar a alguien en algún lugar del camino (honestamente, no puedo creer cuánto tiempo me llevó descubrirlo).

 #Ignore existing directories and files unless has query string RewriteCond %{QUERY_STRING} !eid=(.*) RewriteCond %{REQUEST_FILENAME} -d [OR] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -l RewriteRule ^ - [L] #Redirect and remove query string. #First line was the crucial condition to stop loop by checking for internal redirect first. RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{QUERY_STRING} /?eid=(.*) RewriteRule (.*) https://www.experimonkey.com/experiments/%1? [R=301,L] #Rewrite internally to actual URL RewriteRule ^([a-zA-Z0-9\-]+)/?$ index.php?eid=$1 [L]
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