2

我有兴趣从中提取目录$_SERVER['REQUEST_URI']。我相信我特别需要使用$_SERVER['REQUEST_URI']以防 URL 被mod_rewrite“d”。

如果$_SERVER['REQUEST_URI'] = 'http://example.com/path/to/resource';,那么我可以使用dirname()它并获得http://example.com/path/to.

如果 URI 是目录索引页/等效项,但附加了查询字符串或哈希,则$_SERVER['REQUEST_URI']可能类似于'http://example.com/path/?query'or http://example.com/path/#hash。在这种情况下,dirname()也可以正常工作——两者都解决了http://example.com/path.

但是,如果 URI 没有查询字符串或散列,pathname()则剥离底层目录,例如http://example.com/path/变为http://example.com. 我的解决方案是简单地将哈希符号附加到每个 URI,即dirname($_SERVER['REQUEST_URI'].'#'). dirname('http://example.com/path/'.'#')产量http://example.com/path

但我不明白 URI 是如何工作的,所以我真的不知道这是否安全。

  • 如果 URI 指向一个目录,它是否总是以字符结尾/?如果我http://example.com/path在浏览器中输入,它会重定向到http://example.com/path/,并添加尾部斜杠。但是,这会一直发生吗?
  • 查询字符串和哈希是否总是得到 URL 编码?例如,我可以http://example.com/path/?query=a/b/c在我的浏览器中输入,它会被解释为http://example.com/path/?query=a%2Bb%2Bc. 但是如果没有发生这种转换,那么pathname()就会返回http://example.com/path/?query=a/b,这会很糟糕。
  • URI 可以有\s 还是目录总是用 分隔/
4

0 回答 0