从REQUEST_URI中提取目录

时间:2013-10-05 23:11:43

标签: php mod-rewrite uri

我有兴趣从$_SERVER['REQUEST_URI']中提取目录。我认为,如果网址为$_SERVER['REQUEST_URI'],我特别需要使用mod_rewrite

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

如果URI是目录索引页面/等效,但是附加了查询字符串或哈希,则$_SERVER['REQUEST_URI']可能类似于'http://example.com/path/?query'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/,添加尾部斜杠。这个总是会发生吗?
  • 查询字符串和哈希始终是否进行了网址编码?例如,我可以在浏览器中输入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是\还是目录始终以/分隔?

0 个答案:

没有答案