からディレクトリを抽出することに興味があり$_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'
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 を持つことができますか、またはディレクトリは常に で区切られ/
ますか?