2012-12-07 172 views
0

我有這樣的配置在虛擬主機:國防部重寫長度

RewriteEngine On 
RewriteMap mapfile txt:mapfile.txt 
RewriteCond ${mapfile:$1?%{QUERY_STRING}} >"" 
RewriteRule ^/(.+)$ ${mapfile:$1?%{QUERY_STRING}}? [R=301] 

該工程確定這個mapfile.txt

prueba/code.asp?id=489 /newurl 

但有了這個mapfile.txt不匹配:

prueba/code.asp?id=489/

重寫日誌中:

[07/Dec/2012:20:52:08 +0100] [rid#7f1ac2d4280/initial] (5) map lookup OK: map=mapfile[txt] key=prueba/code.asp?id=489 -> val=/ 

[07/Dec/2012:20:52:08 +0100] [rid#7f1ac2d4280/initial] (4) RewriteCond: input='/' pattern='>""' => not-matched 

爲什麼不匹配?是否有另一種方法來測試查詢長度是否大於「」

回答

0

它不匹配,因爲它正在做你正在要求它做的事情,而不是你期望它做的事情。地圖查找工作按預期產生有效:

RewriteCond/>"" 

然而,COND匹配字符串的操作裝置「的字母排序順序比較」和>「」可能會有問題。爲什麼不使用正則表達式。如果它包含(至少)一個字符,則會匹配:

RewriteCond ${mapfile:$1?%{QUERY_STRING}} . 
+0

非常感謝。現在這工作完美 – Luis