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'http://example.com/path/#hashdirname()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