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

220
Vistas
nginx reescribe expresiones regulares con múltiples referencias inversas

Soy nuevo en Nginx y estoy tratando de configurar reglas de reescritura para mis hosts virtuales de Nginx.

/{firstname}-{lastname}.php para ser reescrito a /Individual.php?firstname={firstname}&lastname={lastname}

/{firstname}-{lastname}-Info.php?Id=123 para ser reescrito a /Individual-Info.php?Id={id}

Ese es el escenario del caso feliz. A veces, también puede haber un segundo nombre, por ejemplo

{firstname}-{middle}-{lastname}.php se reescribirá a Individual.php?firstname={firstname}&middle={middle}&lastname={lastname}

/{firstname}-{middle}-{lastname}-Info.php?Id=123&otherparam={otherparam} para ser reescrito a /Individual-Info.php?Id={id}&otherparam={otherparam}

Y a veces, puede que solo sea el apellido

{lasname}.php para reescribir a Individual.php?lastname={lastname}

He leído los documentos en el módulo de reescritura, pero supongo que solo estoy luchando con la expresión regular correcta, por lo que esta podría ser más una pregunta de expresión regular, pero cualquier ayuda sería apreciada.

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

0

Debe ordenar las reescrituras para que la coincidencia más específica ocurra antes que la coincidencia menos específica. Haz -Info primero, luego tres nombres, luego dos nombres, luego un nombre.

Las reescrituras son ambiguas y existe el riesgo de un ciclo de redirección, particularmente para Mr Individual . Probablemente debería colocar las declaraciones de rewrite dentro de su ubicación existente location ~ \.php$ y usar el sufijo de break . Vea este documento para más detalles.

Por ejemplo:

 location ~ \.php$ { rewrite -Info\.php$ /Individual-Info.php break; rewrite ^/(.*)-(.*)-(.*)\.php$ /Individual.php?firstname=$1&middle=$2&lastname=$3 break; rewrite ^/(.*)-(.*)\.php$ /Individual.php?firstname=$1&lastname=$2 break; rewrite ^/(.*)\.php$ /Individual.php?lastname=$1 break; ... }

En respuesta a su comentario, puede reescribir solo los URI .php que aún no existen utilizando try_files con una location con nombre.

Por ejemplo:

 location ~ \.php$ { try_files $uri @rewrite; ... } location @rewrite { rewrite -Info\.php$ /Individual-Info.php last; rewrite ^/(.*)-(.*)-(.*)\.php$ /Individual.php?firstname=$1&middle=$2&lastname=$3 last; rewrite ^/(.*)-(.*)\.php$ /Individual.php?firstname=$1&lastname=$2 last; rewrite ^/(.*)\.php$ /Individual.php?lastname=$1 last; return 404; }

Tenga en cuenta que deberá usar rewrite...last en lugar de rewrite...break . La declaración try_files se agrega (o modifica) dentro de su ubicación existente location ~ \.php$ .

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