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>
È stato utile?

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 di corrispondenza, ma è stato non tra maiuscole e minuscole, così mi è stato sempre reindirizzamenti infiniti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top