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.

La reescritura de URL (mod rewrite) ignora los dígitos en la condición, ¿cómo hacer que tenga en cuenta los dígitos?

Todo se realiza dentro de httpd.conf, no hay .htaccess

Tengo dos condiciones simples. Si la URL contiene la cadena “talis”, se dirige a un archivo; de lo contrario, a otro.

RewriteRule talis talis.php [L]
RewriteRule . index.php [L]

Esta pieza funciona como se espera:
[dominio]/t/1/talis/s va a talis.php
[dominio]/t/1/bob/s va a index.php

Pero cuando intento poner números allí, siempre se aplica la última regla

RewriteRule talis01 talis.php [L]
RewriteRule . index.php [L]

(nota talis01)

Esto siempre irá a la segunda condición.
[dominio]/t/1/talis01/s va a index.php
[dominio]/t/1/bob/s va a index.php

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Al agregar los números en la condición, es necesario ajustar la expresión regular utilizada en la segunda regla para excluir los casos en los que la cadena “talis” está seguida de números. Una forma de lograr esto es agregando una negación anticipada a la expresión regular:

    RewriteRule talis\d* talis.php [L]
    RewriteRule ^(?!.*talis\d*$) index.php [L]
    

    Aquí, la primera regla coincide con “talis” seguido de cero o más dígitos, y la segunda regla coincide con cualquier URL que no contenga “talis” seguido de dígitos. La negación anticipada (?!.*talis\d*$) se asegura de que la segunda regla se aplique solo a URL que no coinciden con este patrón.

    Con estas reglas, ambas URL a continuación se dirigirán correctamente a sus respectivos archivos:

    [dominio]/t/1/talis01/s va a talis.php
    [dominio]/t/1/bob/s va a index.php
    

Comments are closed.