2011-12-29 9 views
0

私はasp.net MVCアプリケーションでURLを書き換えるために使用するマップを持っています。私はこのルールを地図内のルックアップ値の存在を条件に条件付けしたいと思います。どのようにマップ内の検索でrewritecondを使用しますか

RewriteMap contentmap txt:content/maps/contentmap.txt [NC] 
RewriteRule home/([^/]*)$ /home/${contentmap:$1}/$1 [NC,L] 

これは私がに実行している問題は、時にはパターンhome/some-other-content-idは、コンテンツ・マップに一致しない場合がありますされているURL home/some-content-idを取り、home/someaction/some-content-id

としてそれを書き換えます。そうだけど、そうでないとルールが書き換えられるようになっている(またはそう思われる)のです。

私の最初の考えは、ルールの上にリライティングを置くことですが、どのようにルックアップを行いますか?

RewriteMap contentmap txt:content/maps/contentmap.txt [NC] 
RewriteCond ${contentmap:$1} >"" [NC] 
RewriteRule home/([^/]*)$ /home/${contentmap:$1}/$1 [NC,L] 

を空の文字列よりも大きなもの(「」)で${contentmap:$1}結果は、そのルールを続けた場合の意味:

答えて

1

は、あなたがしようとしています。

+0

おかげで、これはうまく働いていたと私にIIS6拡張子のURLの処理中に不快なeurl.axdジャンクのアイデアを与えました。 – jason

1

次の構文を試してみてください:

RewriteMap contentmap txt:content/maps/contentmap.txt [NC] 
RewriteCond ${contentmap:$1|NOT_FOUND} !NOT_FOUND 
RewriteRule home/([^/]*)$ /home/${contentmap:$1}/$1 [NC,L] 
関連する問題