Me he encontrado con muchas preguntas relacionadas con la redirección basada en consultas HTTP y, por supuesto, la coincidencia de partes parciales de las URL, pero no ambas .
Mi estructura de directorios se parece a lo siguiente:
La reescritura que tengo funciona bien, excepto que bloquea el directorio en el segundo elemento de la lista:
RewriteCond %{REQUEST_URI} !\.xml$ RewriteRule ^[^/].*/themes(.+) themes$1 [L] Lamentablemente, tanto demo/themes/?ajax=1 como themes/?ajax=1 se solicitan con la consulta HTTP ajax . Sin embargo, solo se solicita la demo/themes/ con una consulta HTTP foo .
Entonces, en resumen, ¿cómo reescribo mi rewrite para que solo se aplique si la consulta ajax http está presente y, al mismo tiempo, la consulta foo http no está presente?
Puede usar la regla de reescritura como esta:
# when ajax=<whatever> query parameter is present RewriteCond %{QUERY_STRING} (?:^|&)ajax= [NC] # when foo=<whatver> is not present RewriteCond %{QUERY_STRING} !(?:^|&)foo= [NC] # when URI is not ending with .xml RewriteCond %{REQUEST_URI} !\.xml$ [NC] # rewrite handler RewriteRule ^[^/].*/themes(.+) themes$1 [L]