Как я могу преобразовать это правило Apache Rewrite в правило Tuckey UrlRewriteFilter? - PullRequest
3 голосов
/ 09 сентября 2010

У меня есть следующее правило переписывания Apache

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

, который меняет это:

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

к этому:

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

Я бы хотел перенести его на этот tuckey.org Фильтр перезаписи URL .

Какое эквивалентное правило я мог бы использовать, чтобы сделать URL строчными? Меня особенно интересует, как сформировать элемент условия.

Вот мое первое сокращение правила, но оно не работает, даже без условия:

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

Ответы [ 2 ]

4 голосов
/ 10 сентября 2010

Вот то, на чем я остановился:

<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>

Первое условие - запретить запуск правила для запросов AJAX A4J.

1 голос
/ 26 марта 2013

Шон,

Вам не нужно условие для этого (исключая игнорирование вызовов AJAX). Что еще более важно, элемент условия не имеет чувствительного к регистру атрибута , только элемент from. Как только я понял это, я смог написать правило как:

<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>

ПРИМЕЧАНИЕ. Это работает для всего запроса пути (но не для строки запроса).

Я наткнулся на ваше сообщение, потому что мне дали правило фильтра перезаписи URL, которое выглядело так, как будто ваше не работает. Путем множества проб и ошибок я в конце концов обнаружил, что проблема не с регулярным выражением вообще. Это было то, что было соответствие, но не чувствительно к регистру, поэтому я получал бесконечные перенаправления

...