2016-09-08 11 views
0

My Rewriteルールで複数のrewritemapルックアップが実行されていないため、その理由がわかりません。ユーザーを新しいURL検索構造にリダイレクトしようとしています。複数の検索パラメータがあり、その理由がわからない場合は、書き換えルールは機能しません。Mod Rewriteで複数のRewriteMapルックアップが実行されない

// Desired mapping examples: 
http://www.host.com/search/small   => http://www.host.com/search?q=tall 
http://www.host.com/search/medium/brown => http://www.host.com/search?q=grande,chocolate 

// Rule 
RewriteMap searchMap txt:/opt/etc/apache/conf/searchMap.txt 

// 1 Search Parameter 
RewriteCond ${searchMap:$1|$1} ([^/]*) 
RewriteRule "/search/(([^/]*))$" "http://%{HTTP_HOST}/search?q=%1" [NC,R,L] 

// 2 Search Parameter 
RewriteCond ${searchMap:$1|$1} ([^/]*)/([^/]*) 
RewriteRule "/search/(([^/]*)/([^/]*))$" "http://%{HTTP_HOST}/search?q=%1,%2" [NC,R,L] 

// 3 Search Parameter 
RewriteCond ${searchMap:$1|$1} ([^/]*)/([^/]*)/([^/]*) 
RewriteRule "/search/(([^/]*)/([^/]*)/([^/]*))$" "http://%{HTTP_HOST}/search?q=%1,%2,%3" [NC,R,L] 

// searchMap.txt 
small tall 
medium grande 
low-fat healthy 
low-calorie healthy 
brown chocolate 
pink strawberry 

出力:

http://www.host.com/search/small   => http://www.host.com/search?q=tall 
http://www.host.com/search/small/brown => http://www.host.com/search?q=small,brown 

私の最初の出力が正しくマップされているが、私のもう一つはありません。 Apacheはマッピングを一切行っていません。これが起こっている理由は何ですか?

答えて

0

ソリューションは、書き換えルール内マッピング検索を置くことです:

RewriteMap searchMap txt:/opt/etc/apache/conf/searchMap.txt 
RewriteRule "/search/(([^/]*))$" "http://%{HTTP_HOST}/search?q=${searchMap:$1|$1}" [NC,R,L] 
RewriteRule "/search/(([^/]*)/([^/]*))$" "http://%{HTTP_HOST}/search?q=${searchMap:$1|$1},${searchMap:$2|$2}" [NC,R,L] 
関連する問題