2010-10-22 82 views
3

URL内有百分号,向浏览器返回错误的请求(错误400)。我有一个具有百分号(%)符号的文件名,驻留在服务器上。htaccess从URL中跳出百分比(%)

原文件名: 204153_20090605_Aluminiumacetotartraat_DCB_oordruppels_1,2%的.pdf

地址在浏览器中点击下载链接后:

http://www.example.com/204153_20090605_Aluminiumacetotartraat_DCB_oordruppels_1%2C2%25.pdf

这将返回400错误与错误的请求。我使用的Kohana 3

现有的.htaccess文件内容如下:

 
RewriteEngine On 

RewriteBase/

<Files .*> 
Order Deny,Allow 
Deny From All 
</Files> 

RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule .* index.php/$0 [PT] 
+0

我宁愿尝试修改文件名和删除'%'和',' – Geo 2012-12-29 21:48:37

回答

1

尝试B flag,确保%25,转义到%由mod_rewrite的,插回时重新逃回%25进入目标路径。

RewriteRule .* index.php/$0 [PTB] 
+0

它返回服务器错误,错误500添加B – 2010-10-22 12:54:29

+1

后,您在'忘了逗号[PT,B]'。 – Gumbo 2010-10-22 12:58:35

+0

谢谢@Gumbo错误消失了,但它返回了500错误,因为它无法将%25解析为%。在访问日志中,我得到了--- 127.0.0.1 - - [22/Oct/2010:18:29:42 +0530]“GET /204153_20090605_Aluminiumacetotartraat_DCB_oordruppels_1,2%25.pdf HTTP/1.1”500 22514“ - ”“Mozilla/5.0(Windows; U; Windows NT 5.1; en-US; rv:1.9.2.11)Gecko/20101012 Firefox/3.6.11“ – 2010-10-22 13:02:12