Pregunta

tengo la siguiente regla de reescritura de Apache

<IfModule rewrite_module>
     RewriteEngine on
     RewriteMap tolowercase int:tolower
     RewriteCond $2 [A-Z] 
     RewriteRule ^(.*)/(.*).html$ $1/${tolowercase:$2}.html [R=301,L]
</IfModule>

que cambia esto:

http://localhost.localdomain.com/FooBarBaz.html

a esto:

http://localhost.localdomain.com/foobarbaz.html

Me gustaría portarlo a este tuckey.org de reescritura de URL Filter .

¿Qué es una norma equivalente que podría utilizar para hacer que el URL en minúsculas? Me interesa sobre todo en la manera de formar el elemento de condición.

Aquí está mi primer corte en la regla, pero no funciona, incluso sin la condición:

<rule>
    <name>Force URL filenames to lower case</name>
    <from>^(.*)/(.*).html$</from>
    <to type="permanent-redirect" last="true">$1/${lower:$2}.html</to>
</rule>
¿Fue útil?

Solución

Esto es lo que finalmente se estableció en:

<rule match-type="regex">
    <name>Force URL filenames to lower case</name>
    <condition type="request-uri" casesensitive="false" operator="notequal">^.*/a4j.*$</condition>
    <condition type="request-uri" casesensitive="true">^.*/.*[A-Z].*.html$</condition>
    <from>^(.*)/(.*).html$</from>
    <to type="permanent-redirect" last="true">$1/${lower:$2}.html</to>
</rule>

La primera condición es evitar que la regla se ejecute en las solicitudes a4j AJAX.

Otros consejos

Sean,

Usted no necesita una condición para hacer esto (exceptuando el caso omiso de las llamadas AJAX). Más importante aún, el elemento de condición no tiene un casesensitive atributo , sólo el elemento de hace. Una vez que me di cuenta de esto, yo era capaz de escribir la regla como:

<rule match-type="regex">  
    <note>Force URL to lower case</note>
    <from casesensitive="true">^.*[A-Z].*$</from>
    <to type="permanent-redirect" last="true">${lower:$0}</to>  
</rule>

NOTA: Esto funciona para toda la solicitud de surco (aunque no la cadena de consulta).

Me tropezó con su puesto porque la regla de filtro de reescritura de URL se me dio que se parecía mucho a la suya no estaba funcionando. A través de una tonelada de ensayo y error, al final me di cuenta de que el problema no era con la expresión regular en absoluto. Era que era a juego, pero era no mayúsculas y minúsculas, por lo que estaba recibiendo redirecciones infinitas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top