簡體   English   中英

mod_rewrite:查詢字符串中來自URI的句點

[英]mod_rewrite: periods from URI gone in the query string

問題 :請參見下面的示例。 使用mod_rewrite(以任何方式)將“腳本名稱后的URI部分”放入查詢字符串時,將刪除每個“目錄”的結尾句點(。)。 (Win32上的Apache 2.2.14。)

問題 :有什么方法可以解決此問題,還是必須解析REQUEST_URI?

請求 (“。”已轉義):

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

請求 (“。”未轉義):

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.

嘗試從THE_REQUEST獲取值:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM