アシアル株式会社主催 開発者向け、一歩先をいくためのテクニカルセミナー

<< 通常ログイン認証 質問一覧 kakasiを使った複数の文字列の変換に... >>

  • 0P
ディレクトリ名に%を含むページを表示するには?

ディレクトリ名に「%」を含むページを表示することはできないのでしょうか?
以下のようになっているのですが、「index.html」にアクセスするとbad requestになってしまいます。

○ディレクトリ
/100%/index.html

apacheの設定でアクセス可能にするこはできないのでしょうか?
わかる方がいましたらご教授よろしくお願いします。

○環境
Apache/2.2.3
PHP 5.3.2

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

Re:ディレクトリ名に%を含むページを表示するには?

がると申します。
PHPではなくて、基本的なURIに関するご質問かと思うのですが。

少し技術的な用語で正確に答えるのであれば「いわゆるURLエンコーディング(正確にはPercent Encoding)で記述する」ことで可能になります。

かみ砕きますと。
/100%/index.html

/100%25/index.html
にすると見れると思うのですが如何でしょうか?

こういうあたりはRFCに書いてありますので。一度は読まれることをお薦めいたします。

Re:Re:ディレクトリ名に%を含むページを表示するには?

基本はgalluさんが指摘されているようにURLエンコードですが、
ApacheのAllowEncodedSlashesというパラメータに注意してください。

<ApacheサイトからAllowEncodedSlashesに関する抜粋>
AllowEncodedSlashes ディレクティブは符号化された パス分離文字 (/ は %2F、さらにシステムによっては \ に対応する %5C) が存在する URL の使用を 許可するかどうかを決定します。通常はそのような URL は 404 (Not found) エラー で拒否されます。
</ApacheサイトからAllowEncodedSlashesに関する抜粋>
以下も参考にしてください。

http://httpd.apache.org/docs/2.0/ja/mod/core.html

上記以外にAllowEncodedSlashesを検索エンジンでサーチすればたくさんヒットします。

なおPHPでのURLエンコードは
urlencode
関数で行えます。

Re:ディレクトリ名に%を含むページを表示するには?

がるさんが丁寧に書かれているので蛇足ですが・・

phpで(URLエンコード前のディレクトリ・フォルダ名から)URLエンコードしたURLを返すには、urlencode()を使います。

  http://jp.php.net/manual/ja/function.urlencode.php

まぁ(QueryStringならまだしも)ディレクトリ名・ファイル名にエンコード必須な文字が混じるというのは、そうそうありませんけどね(つまり、そもそもそういう命名をしません)。
通常ログイン認証 質問一覧 kakasiを使った複数の文字列の変換に...