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

このQ&Aのポイント
  • PHPを使用して、ディレクトリに入っているファイルを別のディレクトリにあるように見せかけることは可能です。具体的な方法はディレクトリのシンボリックリンクを作成することです。
  • シンボリックリンクは、実際のファイルを別の場所にリンクさせることができる仮想のリンクです。これにより、指定したディレクトリにアクセスした場合に、他のディレクトリにあるファイルを閲覧できるようにすることができます。
  • もしも自動でコピーする方法を希望する場合は、PHPのファイル操作関数を使用してファイルをコピーすることができます。具体的な方法は、元のファイルを読み込み、新しいディレクトリにコピーする際にファイル名を変更することです。これにより、手動でコピーする手間を省くことができます。
回答を見る
  • ベストアンサー

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

ディレクトリに入っているファイルを別のディレクトリにあるように見せかける 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 という形です。方法がございましたらご教授頂けませんでしょうか。 もしも見せかける事が不可能な場合は、「自動でコピーする」という方法 ございましたら、お教え頂けると助かります。(現在、手動でコピーしているので…) 宜しくお願いします。

noname#125049
noname#125049
  • PHP
  • 回答数2
  • ありがとう数5

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

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.2

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でそのままファイル名を返すとかも必要。 上記はあくまでイメージ、または入口で。

noname#125049
質問者

お礼

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

その他の回答 (1)

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.1

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

noname#125049
質問者

補足

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

関連するQ&A

  • ホームページフォルダ内ファイルのツリー表示

    ホームページを見ていると階層構造になっていると思います。 例) index.html - yasahi - index.html - ninnzin - index.html - daikon.html - nasu.html - kudamono - index.html - ringo - mikan - contact この時、トップページにブラウザでアクセスすると 通常indexファイルを表示させますが、 このホームページのフォルダのツリー構造を見たいです。 以前、何かのツールで確認する方法があったのですが、 忘れてしまいました。 知っている方がいらっしゃいましたら、 教えてください。 宜しくお願いします。

  • ディレクトリの分からないファイルのパスを調べる

    php 5.2.8 Linux です。 ディレクトリの分からないファイルのパスを調べたいです。 glob("*/ファイル名")やrealpath("*/ファイル名")などとしましたが 出てきません。ディレクトリにワイルドカードは使えないのでしょうか? 別の方法でも良いのでphpでディレクトリの分からないファイルのパスを調べる方法があればお教え願います。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 1つのcakePHPで複数のサイトを作成したい

    1つのアプリ(cakePHP)で、複数のサイトが入っている物を作成したいです。 URLであらわすと下記のように、みかんコンテンツとりんごコンテンツが1つのサイトの中に別々にある感じです。 http://ドメイン/mikan/top/index/ http://ドメイン/ringo/top/index/ (http://ドメイン/コンテンツ名/コントローラー名/ファンクション名/) また、ファイル数が膨大になるため、下記のようにフォルダ分けをしたいです。 ●controllersフォルダ controllers   └mikan     └top_controoler.php   └ringo     └top_controller.php ●viewsフォルダ views   └mikan     └top      └index.html   └ringo     └top      └index.html ※controllerとview以外のファイルは共通で使いたい こうしたいのですが、ルーティングなどをいじっても上手くいかず、現在は下記のようにしています。 http://ドメイン/mikan_top/index/ http://ドメイン/ringo_top/index/ (http://ドメイン/コントローラー名/ファンクション名/) ●controllersフォルダ controllers   └mikan     └mikan_top_controoler.php   └ringo     └ringo_top_controller.php しかし、これだとURLがかっこ悪いので、最初に示したURLでアクセスできるようにしたいのです。 何かいい方法は無いでしょうか? controllerやviewのファイル名、クラス名などは複雑になっても構いません。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • ディレクトリのコピー、リネイム

    こんにちは。 現在、PHP上であるディレクトリをコピーして 異なる名前で作成したいと考えておりましたが ファイルコピーの方法しかわかりませんでした。 ディレクトリのコピーはできないのでしょうか?

    • ベストアンサー
    • PHP
  • 別ディレクトリのファイル読み込みについて

    プログラムと別のディレクトリに入っている複数のファイルの内容(座標データ)を呼び出して1つのファイルに格納する方法を教えてください。ものすごい量のデータなので出来れば一度に済ませたいのですが・・・ よろしくお願いします!

  • フォルダ内のファイルを取得し別ディレクトリへコピーしたい

    Windowであるフォルダ内の全てのファイルを取得して、別のディレクトリのフォルダへコピーしたいです。 バッチコマンドでできれば一番いいのですが、そんな機能をもっているコマンドはないみたいなので、VBスクリプトでも構いません。 いい方法ないでしょうか?

  • 別サーバのディレクトリへのファイルのコピー方法がわかりません

    Linux上で、自分のパソコン上に保存されているディレクトリやファイルを、別サーバ上にあるディレクトリ内へ保存する方法がわかりません。 自分のパソコンは、ubuntu8.04です。 コピー先のサーバは、完全にCUI仕様なので、ウィンドウを表示してドラッグ・ドロップなどができません。ターミナルで特定のコマンドを打てばいいのでしょうか? Windowsだと、ポデローサなどを使えばできるそうですが、LinuxやMac上でこれを行う方法がわかりません。 m(_ _)mお願いします。 参考になるかわかりませんが、 コピー先にしたいそのサーバはLinux仕様だから、Linuxで使えるコマンドはそのまま使える、と言っていました。

  • ファイルまたは、ディレクトリが、壊れている

    写真のデータを外付HDDに移したくて、やってみたのですが、「ファイルまたは、ディレクトリが、壊れているため、読み取れません」とメッセージがでます。ということは、データが壊れていてコピーできないということでしょうか? 大事な写真たちなので、バックアップのためにHDDにコピーしたいのですが、なにか解決法方法はありますでしょうか? OSはVista。パソコンはFMVのCE50W7です。

  • delphi5でのディレクトリ内ファイル名の取得

    こんにちは。質問があります。 delphiのアプリケーションであるディレクトリのフォルダ内のファイルを 別のディレクトリのフォルダ内に名前を変えてコピーしようと考えています。 基本的にコピー元のディレクトリ名はわかりません。 コピー先のディレクトリは存在しなければ、名前を指定して作成し、その中に名前を変更したファイルを格納する流れです (わかりづらいかも・・・) フォルダが存在しなければ作成したり、ファイル名を変更してコピーする のはわかったのですが、コピー元のディレクトリ内のファイル(もしくはディレクトリ)名を取得することがわかりません。 全てソースの中でプログラムしたいと考えています。(VCLは使用しない) こんなんでもわかっちゃったりする方がいらっしゃいましたら、 どうか愛の手を・・・

  • ディレクトリ以下の全ファイルのコピー

    /src/ディレクトリにあるすべてのファイルやサブディレクトリを/dest/ディレクトリにコピーしたいと思っています。 ただ、次のコマンドでは/src/.dotfileといったドットファイルはコピーされません。 $ cp -Rf /src/* /dest/ このようなドットファイルも含めてすべてのファイル、サブディレクトリをコピーするにはどのようにするのがよいのでしょうか? 次のような方法が思い浮かびましたが、もっとシンプル or スマートな方法がありましたら教えてください。 (a)シェルオプションのdotglobを一時的にONにしてから、上記cpコマンドを実行する。 (b)/src/直下のドットファイルだけ別途指定する。 $ cp -Rf /src/{*,.[^.]*} /dest/

専門家に質問してみよう