Tengo problemas para hacer que este htaccess funcione

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} /([temp|ox|cond|new-url]+)/
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ graph.php?grap=$1&time=$2 [NC,L]

Antes de agregar la condición new-url a la condición de reescritura, estaba funcionando bien

También intenté poner new\-url y new/-url pero tampoco funciona

¿Qué estoy haciendo mal?

0
Diego Vega 29 ene. 2016 a las 12:24

2 respuestas

La mejor respuesta

Creo que hay algunos errores en su archivo.

Primero, ([temp|ox|cond|new-url]+) es lo mismo que ([cdelmnoprtuwx|-]+). Aquí busca caracteres , no palabras . Si lo entiendo, está buscando URL que comiencen por /temp/, /ox/, /cond/ o new-url. Entonces usaría esta condición:

RewriteCond %{REQUEST_URI} ^/(temp|ox|cond|new-url)/

En segundo lugar, cuando coincide con new-url, hay un guión. ¡Pero tu próxima regla no acepta ningún guión! Cambiar por este:

RewriteRule ^([a-z-]+)/([a-z-]+)$ graph.php?grap=$1&time=$2 [NC,L]

Notas:

  • Usé [a-z] en lugar de [A-Za-z] ya que su regla no tiene en cuenta el caso ([NC])
  • Agregué el guión al final del rango de caracteres: [a-z-]
2
zessx 29 ene. 2016 a las 09:51

Creo que necesitas escapar de la clase de personajes internos.

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} /([temp|ox|cond|new\-url]+)/
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ graph.php?grap=$1&time=$2 [NC,L]

Si eso no resuelve el problema, puede usar un patrón simple:

RewriteCond %{REQUEST_URI} /(temp|ox|cond|new-url)/?
1
Amit Verma 29 ene. 2016 a las 09:42