tengo la siguiente URL ...¿Cómo puedo obtener mod_rewrite para que coincida con una regla de una sola vez
http://localhost/http.mygarble.com/foundationsofwebprogramming/86
... que quiero convertir en lo siguiente:
pensé que podría lograr esto con la siguiente regla:
RewriteRule ([^/]+)/([^/]+)$ php/blog.php?subdomain=$1&page=post&label=$2 [NC,L]
Sin embargo, lo que encuentro es que esta regla se aplica repetidamente, lo que da como resultado un error interno del servidor. Entiendo que cuando el URI se transforma utilizando esta regla, el URI resultante también coincidirá con la regla y, por lo tanto, se aplica nuevamente ad-infinitum.
Mi comprensión anterior (por cierto confusa) era que la bandera [L] detendría el procesamiento posterior, aunque ahora entiendo que esto simplemente significa que solo el resto de las reglas se omiten, y no detiene la ejecución del motor de reescritura. a través de las reglas de nuevo.
puedo solucionar este problema agregando la siguiente condición ...
RewriteCond $0 !php/blog.php
RewriteRule ([^/]+)/([^/]+)$ php/blog.php?subdomain=$1&page=post&label=$2 [NC,L]
... o escribiendo una expresión regular más específico. Pero lo que realmente quiero hacer es encontrar una forma de evitar que el motor de reescritura intente CUALQUIER otra coincidencia una vez que esta regla coincida una vez. es posible?
Muchas gracias.
La segunda solución es ideal. Los únicos redireccionamientos que quiero son externos, todas las reglas están destinadas a ejecutarse solo una vez. Gracias amablemente –
Lamentablemente, no tengo la reputación de votar su respuesta, quizás alguien lo haga en mi nombre. Gracias de nuevo. –
@James Smith: no necesitas votar mi respuesta, solo debes "aceptarla" (para que yo tenga el marcado verde). – regilero