当前位置:  开发笔记 > 编程语言 > 正文

如何配置Apache/PHP以接受查询字符串中的斜杠?

如何解决《如何配置Apache/PHP以接受查询字符串中的斜杠?》经验,为你挑选了1个好方法。

我有两个运行PHP的Apache服务器.一个接受查询字符串中的正斜杠,并以预期的方式将其传递给PHP,例如:

http://server/index.php?url=http://foo.bar

工作,在PHP中这个表达式是真的:

$_REQUEST['url'] == "http://foo.bar"

但是,在其他 Apache服务器中,相同的URL会导致403 Forbidden错误!请注意,如果查询字符串是正确的URL转义(即使用%2F而不是正斜杠),那么一切正常.

显然,Apache或PHP配置存在一些差异导致这种情况,但我无法弄清楚是什么!

我希望在这两种情况下接受这种形式的URL,而不是拒绝它.



1> Alex..:

这里的一些帖子表明OP的使用是错误的,这是错误的.

扩展Sam152的注释,允许查询字符串包含两者?和/字符,请参阅第3.4 http://www.ietf.org/rfc/rfc3986.txt,它基本上是由蒂姆·伯纳斯-李和朋友理事网络如何运作的书面规范.

问题是编写得不好(或配置不当或误用)的解析器会将查询字符串斜杠解释为分隔路径组件.

我已经看到PHP的pathinfo函数用于解析URL的示例.没有编写Pathinfo来解析URL.但是,您可以使用parse_url提取路径,然后使用fileinfo从路径中检索详细信息.你会看到parse_url处理/和?在查询字符串中就好了.

在任何情况下,总的问题是,这个区域是知之甚少全方位的,即使是经验丰富的开发人员,大多数人(包括我自己,直到最近)只是假设任何文件名必须url编码,也就是如果你明显的错误后,考虑标准.

tl; dr阅读规范:)

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有