htaccess 从 URL 中转义百分比 (%)
URL 中包含百分号,会向浏览器返回错误请求(错误 400)。我有一个带有百分号(%
)的文件名,驻留在服务器上。
原始文件名:
204153_20090605_Aluminiumacetotartraat_DCB_oordruppels_1,2%.pdf
单击下载链接后浏览器中的 URL:
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]
Having percent sign inside URL, returns bad request (error 400) to the browser. I have a filename that have percent (%
) sign, resides at server.
Original File name:
204153_20090605_Aluminiumacetotartraat_DCB_oordruppels_1,2%.pdf
URL in browser after clicking on download link:
http://www.example.com/204153_20090605_Aluminiumacetotartraat_DCB_oordruppels_1%2C2%25.pdf
This returns 400 error with "bad request". I am using Kohana 3.
Existing .htaccess
file contents are as follows:
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]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试使用 B 标志 以确保
%25< /code> 未通过 mod_rewrite 转义为
%
,当插入回目标路径时,会重新转义回%25
。Try the B flag to ensure the
%25
, unescaped to%
by mod_rewrite, is re-escaped back to%25
when inserted back into the target path.