1

現在の vhost_config.conf には、機能するマッピングおよび書き換えルールがあり、以下に示しています。

1: RewriteMap vanityURL txt: vanity_map.txt
2: RewriteCond ${vaintyURL:$1|not-found} ^(.+)$
3: RewriteCond %1 ~^not-found$
4: RewriteRule ^/(.*) /${vanityURL:$1|/$1} [L]

私がする必要があるのは、マップされた URL が大文字と小文字を区別しないようにすることです。

最初に言うのは「追加[NC]」です。そう考えるのは正しいでしょうが、何の効果もありません。

すべてのマッピングを小文字にすることについて話している質問を見てきましたが、それは誰かが/BlackFridayorを入力する問題を解決しません/BlaCKFridAY(何らかの理由でそのようなことをしなければならない可能性があります)。

私が抱えている問題は、次のような行を使用することです

  RewriteRule ^/(.*) /${vanityURL:$1|/$1} [L, NC]

影響はありません。

[NC]条件の 1 つまたはマップ宣言でフラグを前に持つ必要がありますか?

4 行目の 'ignore-case' フラグが機能しないのはなぜですか? 私が見逃しているものは他にありますか?

4

1 に答える 1

2

これはここで機能します:

URL のリストlist.txt

 test1 POMPOM
 test2 pompom
 test3 PomPom

Apache ホスト構成:

RewriteEngine On
RewriteMap lc int:tolower
RewriteMap test txt:/var/www/list.txt
RewriteRule /(.*)$ /${test:${lc:$1}|$1} [R=301]

(外部リダイレクトなので、このテストで簡単に観察できます)

これの意味は:

example.com/TEST1 
example.com/test1
example.com/TeSt1

...すべてリダイレクトしますexample.com/POMPOM

example.com/TEST2 
example.com/test2
example.com/TeSt2

...すべてリダイレクトしますexample.com/pompom

…ということで交換のケースは保存され、

于 2012-12-13T18:25:05.687 に答える