es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Confusión entre dos reglas de reescritura de URLs.

Estas dos reglas están confundidas:

RewriteRule ^health-institute-([a-zA-Z-]+)-([a-zA-Z-]+)$ search.php?city=$1&speciality=$2 [L]
RewriteRule ^health-institute-app-([a-zA-Z-]+)$ search.php?city=$1 [L]

Cuando quiero acceder a health-institute-app-mycity (2da regla), el servidor considera “app” como un valor e intenta acceder a search.php?city=app&speciality=mycity (1ra regla).

¿Cómo puedo indicar que son dos reglas independientes?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para asegurarte de que estas dos reglas están separadas y no entran en conflicto entre sí, puedes agregar la directiva “RewriteCond” antes de cada directiva “RewriteRule”.

    Por ejemplo, puedes modificar las reglas para que se vean así:

    RewriteCond %{REQUEST_URI} !^/health-institute-app-([a-zA-Z\-]+)$ 
    RewriteRule ^health-institute-([a-zA-Z\-]+)-([a-zA-Z\-]+)$ search.php?city=$1&speciality=$2 [L] 
    
    RewriteCond %{REQUEST_URI} ^/health-institute-app-([a-zA-Z\-]+)$ 
    RewriteRule ^health-institute-app-([a-zA-Z\-]+)$ search.php?city=$1 [L]
    

    La primera “RewriteCond” comprueba si la URI de la solicitud no coincide con el patrón de la segunda regla, y la segunda “RewriteCond” comprueba si la URI de la solicitud coincide con el patrón de la segunda regla. De esta manera, cada regla se aplicará solo a las solicitudes correspondientes.

Comments are closed.