我有兴趣从$_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是如何工作的,所以我真的不知道这是否安全。
/
中结束?如果我在浏览器中输入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
,这会很糟糕。\
还是目录始终以/
分隔?