こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ディレクトリに入っているファイルを別のディレクトリにあるように見せかけ

ディレクトリに入っているファイルを別のディレクトリにあるように見せかける

PHPにて、とあるディレクトリに入っているファイルを、別の
ディレクトリ名の中にも入っているように見せかける事は可能でしょうか?

例えば、

/yasai/
…hakusai.php
…daikon.php
…tomato.php

/kudamono/
…ringo.php
…ichigo.php
…mikan.php

という2つのディレクトリに入っているファイルを、

/zenbu/

というディレクトリにも入っているように見せたいのです。

つまり、「zenbu」というディレクトリにアクセスした時、
「yasai」と「kudamono」に入っていたファイルを閲覧可能にしたいのです。

/zenbu/hakusai.php
/zenbu/daikon.php
/zenbu/tomato.php
/zenbu/ringo.php
/zenbu/ichigo.php
/zenbu/mikan.php

という形です。方法がございましたらご教授頂けませんでしょうか。
もしも見せかける事が不可能な場合は、「自動でコピーする」という方法
ございましたら、お教え頂けると助かります。(現在、手動でコピーしているので…)

宜しくお願いします。

投稿日時 - 2010-03-21 13:24:35

QNo.5768293

困ってます

質問者が選んだベストアンサー

mod_rewriteでもいいのかな?

Apacheの機能だし、ユーザーがブラウザからアクセスした際に、zenbuフォルダに入っているように見せかけるってだけだけど。
それに、Apacheにmod_rewriteが入っている事が必要。

.htaccessに以下のように書いて
---ここから
RewriteEngine on
RewriteRule zenbu/(.+)$ zenbu.php?file=$1 [QSA,L]
---ここまで

ここで、ルートの位置に[zenbu.php]を置いておけば、引数になんというphpが指定されたかが入ってくる。
[zenbu.php]の内容

$file = $_GET["file"];
if (is_file("./yasai/".$file)){
include("./yasai/".$file);
}elseif(is_file("./kudamono/".$file)){
include("./kudamono/".$file);
}else{
echo "Error NotFound";
}

----
実際には、ザクッと書いただけなのでエラーは出るかも知れませんが、あくまで上記はイメージと言うことで。
それと、Error NotFoundに関しては、Headerで404を正しく返すなどの処理も必要。
対象がPHPではなく、HTMLファイル、画像ファイル、CSSファイルなどの場合、includeではなくreadfileでそのままファイル名を返すとかも必要。
上記はあくまでイメージ、または入口で。

投稿日時 - 2010-03-21 15:08:10

お礼

お礼が遅くなり誠に申し訳ありません。
仕事が忙しく、なかなか挑戦できなかったのですが、
本日こちらの内容を行ってみて、無事解決致しました。
本当にありがとうございました。

投稿日時 - 2010-03-31 17:21:56

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

一番簡単なのが、シンボリックリンクかハードリンクです。OSの機能を使います。

投稿日時 - 2010-03-21 14:02:09

補足

ご回答ありがとうございます。
今回、できればPHPで行える方法をご教授頂けると幸いです。

投稿日時 - 2010-03-21 14:22:32

あなたにオススメの質問