プロが教えるわが家の防犯対策術!

パーセントが入ったURLのページが、うまく表示されなくて困っています。

環境は、さくらのレンタルサーバ スタンダード なのですが、

/home/USERNAME/www/www.example.com/%E4%BC%8A%E6%9D%B1%E6%84%9B.xml (1)

にファイルを置いている状態で、

http://www.example.com/%E4%BC%8A%E6%9D%B1%E6%84% … (2)

この(2)のURLにアクセスすると、(1)のファイルの内容が表示されるはずだと思うのですが、表示されません。
(2)のURLのファイル名部分をさらにUTF-8でエンコードした、

http://www.example.com/%25E4%25BC%258A%25E6%259D … (3)

にアクセスすると、(1)のファイルの内容が表示されます。


色々検索して、「.htaccess」をいじればいいのかな?と思ったのですが、
知識が乏しく、理解することができませんでした。

どのようにすれば、(2)のURLで(1)のファイルの内容が表示されるようにできるでしょうか。


ご回答よろしくお願いします。

A 回答 (3件)

>どのようにすれば、(2)のURLで(1)のファイルの内容が表示されるようにできるでしょうか。



/home/USERNAME/www/www.example.com/%E4%BC%8A%E6%9D%B1%E6%84%9B.xml

というファイルにアクセスしてほしければ、

http://www.example.com/%25E4%25BC%258A%25E6%259D …

というURLを教えるとか、a タグの href に書くというのが正しいやり方です。

無理矢理やるとすると、.htaccessに、
RewriteEngine on
RewriteRule ^((%[0-9A-F][0-9A-F])+\.xml)$ /foo.cgi?$1 [L]
とか書くと、
http://www.example.com/%E4%BC%8A%E6%9D%B1%E6%84% …
が、
http://www.example.com/foo.cgi?%E4%BC%8A%E6%9D%B …
に置き換わりますので、
foo.cgiの中で、パラメータを見てファイルをアクセスして返せば良い。パラメータをちゃんとチェックして不正アクセス対策とか必要ですが。
なお、パラメータには、"伊東愛.xml" の形で渡りますので、ファイル名にするには、%E4%BC%8A%E6%9D%B1%E6%84%9B.xml の形にエンコードが必要。
    • good
    • 0
この回答へのお礼

ああ、それが正しいやり方だったのですね・・・
なんとなく、Linuxサーバにマルチバイト文字列のファイル名のファイルを置くのは邪道だと思っていました。

「正しいやり方」でやるように根本から直そうと思います。
ありがとうございました。

お礼日時:2011/10/07 13:35

No2です。



>なんとなく、Linuxサーバにマルチバイト文字列のファイル名のファイルを置くのは邪道だと思っていました。

ito-ai.xml というファイル名にするのがトラディショナルですね。

漢字のutf-8エンコードの16進表記にしたければ、べたの E4BC8AE69DB1E6849B.xml とか、:E4:BC:8A:E6:9D:B1:E6:84:9B.xml (CAP形式) とか。

CAP形式というのは、http://ja.wikipedia.org/wiki/Columbia_AppleTalk_ … 参照。20年前くらいに出来たものですが、sambaで生き残ってますね。
    • good
    • 0

(2) のURLで (1) のファイルが表示できないのは正常です。


(2) のURLで表示されるのは、以下のファイルになります。

/home/USERNAME/www/www.example.com/伊東愛.xml


仮に /home/USERNAME/www/www.example.com/ 以下に
次の2つのファイルが存在するとします。

(a) 伊東愛.xml
(b) %E4%BC%8A%E6%9D%B1%E6%84%9B.xml

このとき、
質問にある (2) のURLでアクセスできるのは (a)、
質問にある (3) のURLでアクセスできるのは (b) になります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!