2009-10-20 75 views
0

問題消失: 參見下面的實施例。當使用mod_rewrite將 「腳本名稱後面的URI部分」放入查詢字符串(以任何方式), 時,每個「目錄」的結束句號(。)被刪除。 (在win32上的Apache 2.2.14)mod_rewrite的:從URI週期在查詢字符串

問題: 有什麼辦法解決這個問題嗎?還是我必須解析REQUEST_URI?

請求( 「 」S轉義):

http://localhost/simp.fcgi/fo%2eo%2e=12%2e3%2e/ba%2eh%2e%2e%2e/baz%2e?foo%2e=bar%2e 

(Always get REQUEST_URI: /simp.fcgi/fo.o.=12.3./ba.h.../baz%2e?foo%2e=bar%2e) 

RewriteRule ^simp.fcgi/(.*)$ simple.fcgi?qs=$1 
Got  QUERY_STRING: qs=fo.o.=12.3/ba.h/baz 
Expected QUERY_STRING: qs=fo.o.=12.3./ba.h.../baz. 
     or QUERY_STRING: qs=fo%2eo%2e=12%2e3%2e/ba%2eh%2e%2e%2e/baz%2e 

RewriteRule ^simp.fcgi/(.*)$ simple.fcgi?qs=$1 [NE] 
Got  QUERY_STRING: qs=fo.o.=12.3/ba.h/baz 
Expected QUERY_STRING: qs=fo.o.=12.3./ba.h.../baz. 
     or QUERY_STRING: qs=fo%2eo%2e=12%2e3%2e/ba%2eh%2e%2e%2e/baz%2e 

RewriteRule ^simp.fcgi/(.*)$ simple.fcgi?qs=$1 [QSA] 
Got  QUERY_STRING: qs=fo.o.=12.3/ba.h/baz&foo%2e=bar%2e 
Expected QUERY_STRING: qs=fo.o.=12.3./ba.h.../baz.&foo%2e=bar%2e 
     or QUERY_STRING: qs=fo%2eo%2e=12%2e3%2e/ba%2eh%2e%2e%2e/baz%2e&foo%2e=bar%2e 

請求(S沒能逃脫「。」):

http://localhost/simp.fcgi/fo.o.=12.3./ba.h.../baz.?foo.=bar. 

(Always get REQUEST_URI: /simp.fcgi/fo.o.=12.3./ba.h.../baz%2e?foo.=bar.) 

RewriteRule ^simp.fcgi/(.*)$ simple.fcgi?qs=$1 [QSA] 
Got  QUERY_STRING: qs=fo.o.=12.3/ba.h/baz&foo.=bar. 
Expected QUERY_STRING: qs=fo.o.=12.3./ba.h.../baz.&foo.=bar. 

RewriteRule ^simp.fcgi/(.*)$ simple.fcgi?qs=$1 
Got  QUERY_STRING: qs=fo.o.=12.3/ba.h/baz 
Expected QUERY_STRING: qs=fo.o.=12.3./ba.h.../baz. 

RewriteRule ^simp.fcgi/(.*)$ simple.fcgi?qs=$1 [NE] 
Got  QUERY_STRING: qs=fo.o.=12.3/ba.h/baz 
Expected QUERY_STRING: qs=fo.o.=12.3./ba.h.../baz. 

回答

1

嘗試從THE_REQUEST值改爲:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /simp\.fcgi/([^?\ ]*) 
RewriteRule ^simp\.fcgi/ simple.fcgi?qs=%1 [QSA] 
+0

這是行得通的。它還可以使用REQUEST_URI,這會產生一些簡單的表達式: RewriteCond%{REQUEST_URI} ^/simp \ .fcgi /(.*) RewriteRule^simp \ .fcgi/simple.fcgi?qs =%1 – Qtax 2009-10-20 18:45:14

相關問題