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