Estoy tratando de hacer coincidir lo siguiente con regex y algo está apagado:

\/wp-content\/uploads\/(.[0-9]*)\/(.[0-9]*)\/(.*) \/$3

Estoy buscando hacer coincidir (domain.com/wp-content/uploads/05/2020/image.jpg)

Como ejemplo. El objetivo es hacer una redirección 301 a domain.com/image.jpg pero necesito hacer esto para cualquier URL que tenga un mes y un año

Por favor, aconséjelo.

1
gr8rck 15 may. 2020 a las 10:24

3 respuestas

Qué pasa:

\((.*)\/wp-content\/uploads\/[0-9]{2}\/[0-9]{4}\/(.*)\)

$1/$2 te dará domain.com/image.jpg


Si quieres validar también mes y año, continúa:

\((.*)\/wp-content\/uploads\/(?:0?[1-9]|1[012])\/(?:(?:19|20)[0-9]{2})\/(.*)\)

Demo

0
Maxim Shoustin 15 may. 2020 a las 07:41

Puedes usar algo como esto:

/domain.com\/wp-content\/uploads\/\d{2}\/\d{4}\/.*/i

Esto coincidirá con lo siguiente:

  • domain.com/wp-content/uploads/05/2020/image.jpg
  • domain.com/wp-content/uploads/05/2020/other.jpg

Y no coincide:

  • domain.com/wp-content/uploads/05/20/image.jpg
  • domain.com/wp-content/uploads/0500/2020/image.jpg

Puede probar en regexr.

0
Thomas Bormans 15 may. 2020 a las 07:31

Usa esta expresión regular:

(\S+)\/wp-content\/uploads\/(?:0\d|1[0-2])\/\d{4}\/(\S+)

Luego reemplace con $1/$2

Demo

Como la URL no puede contener caracteres de espacio, es mejor usar \S para evitar su presencia. Además, el valor del mes debe validarse como se muestra. Algo similar debe hacerse para el valor del año si conoce el rango de valores válidos para el mismo.

0
CinCout 15 may. 2020 a las 07:44