ディレクトリ名に%を含むページを表示するには? - PHPプロ!Q&A掲示板

2774

  • 0P

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

質問日時 / 2010年6月20日 22:17    回答数 / 3件

Questioner:  sakutarou  このエントリーをはてなブックマークに追加 

キーワード / apache    bad request   

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

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

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

○環境
Apache/2.2.3
PHP 5.3.2

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



ツリー一覧

┣A01galluがると申します。 PHPではなくて、基本的なURIに関す
┃┗A01-1exceptionCatcher基本はgalluさんが指摘されているようにURLエンコード
┗A02shimixがるさんが丁寧に書かれているので蛇足ですが・・

回答一覧

並び替え:

A01
answerergallu [6月20日 23:15]

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

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

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

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

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

この意見に回答する

ツリーへ TOPへ

A01-1
replyerexceptionCatcher [6月21日 00:20]

基本は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
関数で行えます。

この意見に回答する

ツリーへ TOPへ

A02
answerershimix [6月20日 23:59]

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

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

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

まぁ(QueryStringならまだしも)ディレクトリ名・ファイル名にエンコード必須な文字が混じるというのは、そうそうありませんけどね(つまり、そもそもそういう命名をしません)。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
動的なURLを静的に見せる方法
 このエントリーをはてなブックマークに追加 
A
普通に考えて、mod_rewrite でしょうね。 http://www.nishishi.com/blog/2006/01/mod_rewrite_url.html...

>>続きを読む

GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)