2015-04-05 20 views
0

我有一堆名爲file.txt?x=1&y=2的文件坐在apache目錄中。我想http://example.net/sub/file.txt?x=1&y=2請求服務這些文件,而不是試圖顯示http://example.net/sub/file.txt與查詢路徑x=1&y=2mod_rewrite目標中的字面問號

如果可能的話,我也希望能夠服務file.doc(沒有任何問號),並以正確編碼的文件名(即http://example.net/sub/file.txt%3Fx=1&y=2)爲請求提供服務。

如何在sub /目錄中配置.htaccess文件來使用mod_rewrite來完成該操作?最明顯的規則

RewriteRule ^.*$ $0?%{QUERY_STRING} 

導致直直通因爲mod_rewrite的看到?作爲查詢字符串。

回答

0

編碼問號%3F並用反斜槓掩蓋它:

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^.+$ 
RewriteRule ^[^?]*$ $0\%3F%{QUERY_STRING} 

RewriteCond確保沒有一個查詢字符串的URL沒有得到追加給他們一個問號。 RewriteRule只有當它們沒有正確編碼的問號時才匹配。