Come posso convertire questa regola Apache Rewrite in un URLRewriteFilter regola Tuckey?
-
01-10-2019 - |
Domanda
Ho la seguente regola di riscrittura di Apache
<IfModule rewrite_module>
RewriteEngine on
RewriteMap tolowercase int:tolower
RewriteCond $2 [A-Z]
RewriteRule ^(.*)/(.*).html$ $1/${tolowercase:$2}.html [R=301,L]
</IfModule>
che cambia in questo modo:
http://localhost.localdomain.com/FooBarBaz.html
a questo:
http://localhost.localdomain.com/foobarbaz.html
Mi piacerebbe portarlo a questo tuckey.org URL Rewrite Filter .
Che cosa è una regola equivalente che potrei usare per fare il minuscolo URL? Sono particolarmente interessato a come formare l'elemento condizioni.
Ecco il mio primo taglio alla regola, ma non funziona, anche senza la condizione:
<rule>
<name>Force URL filenames to lower case</name>
<from>^(.*)/(.*).html$</from>
<to type="permanent-redirect" last="true">$1/${lower:$2}.html</to>
</rule>
Soluzione
Ecco cosa alla fine ho optato per:
<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 prima condizione è quella di evitare che la regola esecuzione alle richieste A4J AJAX.
Altri suggerimenti
Sean,
Non è necessario una condizione per fare questo (ad eccezione del ignora sulle chiamate AJAX). Ancora più importante, l'elemento condizioni non dispone di un casesensitive attributo , solo l'elemento da fa. Una volta ho capito che questo, sono stato in grado di scrivere la regola come:
<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: questo funziona per l'intera richiesta percorso (anche se non la querystring).
mi sono imbattuto tuo post perché il filtro regola URL Rewrite mi è stato dato che sembrava un po 'come la tua non funzionava. Attraverso una tonnellata di tentativi ed errori, alla fine ho trovato che il problema non era con l'espressione regolare a tutti. E 'stato che è stata ??em> di corrispondenza, ma è stato non tra maiuscole e minuscole, così mi è stato sempre reindirizzamenti infiniti.