Как я могу преобразовать это правило перезаписи Apache в правило Teckey URLREWRITEFILTER?

StackOverflow https://stackoverflow.com/questions/3678187

Вопрос

У меня есть следующее правило перезаписи 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 Rewrite 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>
Это было полезно?

Решение

Вот что я в конце концов поселился:

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

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

Другие советы

Шить

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

<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 Rewrite, которое мне дали, что выглядит так, как у вас не работает. Через тонну проб и ошибок я в конечном итоге нашел, что проблема не была с регулярным выражением вообще. Это было то, что это было соответствие, но было нет Чувствительный к регистру, поэтому я получал бесконечные перенаправления.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top