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

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

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 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