このApacheを書き換えたルールをTuckey UrlrewriteFilterルールに変換するにはどうすればよいですか?
-
01-10-2019 - |
質問
次の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>
解決
これが私が最終的に解決したものです:
<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呼び出しの無視を除く)。さらに重要なことは、条件要素です CaseSensitive属性はありません, 、From Elementのみが行います。これに気付いたら、ルールを次のように書くことができました。
<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がフィルタールールを書き直したので、あなたの投稿を書き直したので、私はあなたの投稿に出くわしました。大量の試行錯誤を通して、私は最終的に問題が正規表現ではないことを発見しました。それはそれでした だった マッチングだったがだった いいえ ケースに敏感なので、私は無限のリダイレクトを取得していました。
所属していません StackOverflow