フォルダorファイル識別

このQ&Aのポイント
  • 拡張子の無いファイル名があった場合、どのようなアルゴリズムになるのかお知恵を頂戴出来ればと質問させていただきました。
  • 一般的にはスラッシュで終わっていないものは、フォルダとしてサーバが認識すると思うのですが、それがフォルダではなくファイルを読み込むよう設定されていた場合の対処の仕方が分かりません。
  • 拡張子のないURLでファイルにアクセスするというものを作ったことがないため、どのようにしたら良いのかが分かりません。
回答を見る
  • ベストアンサー

フォルダorファイル識別

こんばんは。 お世話になっております。 以前、http://www.hoge.com/hoge のように、拡張子を打ちこまなくてもapacheの設定で該当するファイルにアクセスすることが出来るといったサイトを見たことがあるのですが、そこでちょっと困ったことがありまして、質問させて頂きます。 と申しますのも、フォームにて入力されたURLをポストで受け取り、そのURLのファイル内にある、同一ドメインのリンクの一覧を表示させるために各リンクを(相対パスや絶対パス共に)配列に格納しており、それを表示させ、かつアンカータグを貼りたいと思っているのですが、上記のように、拡張子の無いファイル名があった場合、どのようなアルゴリズム?になるのかお知恵を頂戴出来ればと質問させていただきました。 もう少し具体的にお話すると、 hoge hoge/ hoge/index.html ./hoge ./hoge/ ./hoge/index.html ../hoge ../hoge/ ../hoge/index.html このようなデータが配列にあった場合、一般的にはスラッシュで終わっていないものは、フォルダとしてサーバが認識すると思うのですが、それがフォルダではなくファイルを読み込むよう設定されていた場合の対処の仕方が分かりません。 以上、汎用的なものを作れればと思い、このようなことを想定して作っているのですが、拡張子のないURLでファイルにアクセスするというものを作ったことがないため、どのようにしたら良いのかが分かりません。お忙しい中恐縮ですが、宜しくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

>> 拡張子の無いファイル名があった場合、どのようなアルゴリズム?になるのか >> ファイルを読み込むよう設定されていた場合の対処の仕方が分かりません。 >> どのようにしたら良いのかが分かりません。 アルゴリズムや対処方法を質問するためには、 まず、“何をやりたいか”を説明しないと回答は得られにくいと思います。 拡張子が無く、かつ スラッシュで終わっていない場合に ファイルなのかフォルダーなのかを判定したい。 という質問という解釈で良いのでしょうか そうだとした場合、  URLだけでは判定はできませんので、アクセスして調べることになります。get_headers関数でアクセスして 帰ってきたヘッダーの先頭が「HTTP/1.1 301」などのように 300番台ならフォルダー 200番台ならファイル、 400番台なら無効 と判断すれば多くの場合は、合っていると思います。 rewriteなどが設定されている場合は、そうとは限りませんが・・

mayu_chap
質問者

お礼

mpxさま お世話になっております。 すみません。mpxさまからの回答に気づかずに今日まで来てしまいました。 ご親切な対応をありがとうございました!

関連するQ&A

  • URLでフォルダの最後のスラッシュを省略した時の挙動

    Apache サーバを立ててみました。 一応、普通に動いているのですが、サイト配下のフォルダにアクセスする際、 URLの最後のスラッシュを付け忘れるとドメインの www が除去されて、「ページが見つかりません」に なってしまいます。 OK → http://www.example.jp OK → http://www.example.jp/hoge/ http://www.example.jp/hoge でアクセス(最後のスラッシュを付けない)すると http://example.jp/hoge/ となってしまうのはなぜ? Apacheの設定?

  • 困ってます。教えて下さい

    質問を見て頂きありがとうございます。アクセス解析のCGIを設置する為設定をしているんですが以下のの設定の方法があまりよく分かりません。申し訳ありませんが教えて頂けませんか。 サイトトップURLとHTMLファイルのマッピング # アクセスページのタイトルは、多くのサーバにおいて自動的に取得できま # すが、URLに「~(チルダ)」が含まれている場合や、一部のサーバ環境で # は自動的に取得できません。その場合には、ここにURLとCGIからのパスと # のマッピングを定義して下さい。CGIからの相対パス、サーバルートから # の絶対パスどちらでも結構です。 # ここでマッピングをマニュアル設定する場合には、 # $URL2PATH_FLAG = 1; # としてから、%URL2PATH にマッピングを定義して下さい。 # # 例: # サイトのトップURL : http://www.hoge.com/~foo/ # acc.cgiからの相対パス : ../ # の場合、 # # $URL2PATH_FLAG = 1; # %URL2PATH = ('http://www.hoge.com/~foo/' => '../'); # # とします。もしサーバルートからの絶対パスが分かっていれば、 # # $URL2PATH_FLAG = 1; # %URL2PATH = ('http://www.hoge.com/~foo/' => '/home/foo/'); # # のように設定します。/home/ の部分は、サーバによって異なりますので、 # サービス事業者にお問い合わせください。 # # 注意: # 必ず、URLとパスの最後には、「/(スラッシュ)」を入れて下さい。 #-------------------------------------------------------------------- $URL2PATH_FLAG = 0; %URL2PATH = ('http://www.hoge.com/~foo/' => '/home/foo/'); 例えば相対パスで設定する場合、私のトップページアドレスがwww.ooo,comの場合どのように記述すればいいのでしょうか?ちなみにディレクトリ構成は マイドキュメント→フォルダA→フォルダacc→acc.cgi となっております。

  • 各フォルダーのトップページはどうすべきか?

    ホームページで複数のフォルダがある場合、そのフォルダーのトップページを index.html にしてしまうと、FTPでファイルをアップロードする場合、a/index.html にアップするのを間違って、b/index.htmlにアップして上書きしてしまうということがありえます。このデメリットの反面、index.html としておくと、URLがスラッシュ止めでもいいので、短くなるというメリットもあります。 できれば、このような危険(上書きしてしまうという)を冒したくないのですが、どのようにすればいいでしょうか? お知恵があればお教えください。

  • 開くファイルのフォルダと拡張子txtを指定する

    excel2021で最初に開くフォルダの指定とそこで開く拡張子をtxtに指定することはできますか。 最初に開くフォルダは、何かファイルを開いた後、ファイルーオプションー詳細設定の起動時にすべてのファイルを開くフォルダでパスを指定すれば、 そのフォルダが開きますが、そこに無いファイルの場合はさらに参照としたとき、エクスプローラ風のツリーで、目的のフォルダを開きますが、その場合はexcelファイルのみ表示されるので、さらに開く拡張子TXTなどを指定せねばなりません。 この操作を繰り返しやるときは面倒です。 それで、最初に開くフォルダと拡張子txtを共に指定したいのです。この場合、当然ながらexcelファイルを開く場合は面倒になることは許容します。

  • public_htmlのファイルを検索

    たとえばpublic_htmlの中に index.htmlとどこからもリンクが張られていない hoge.htmlを保存したとします。 このとき、webブラウザからindex.htmlに アクセスしてきた人は 直接http://***/hoge.htmlと入力する以外に hoge.htmlにアクセスすることは出来ますか? つまり、何かの検索により、hoge.htmlを見つけ出すことが できますか?

  • ファイルの相対的参照

    htmlで簡単なHPを作っています。 hpフォルダにindex.html hpフォルダの一つしたのフォルダpointにpage1.htmlがあると します。 hp[index.html] |-point[page1.html] ↑こういう感じ page1.htmlでindex.htmlに戻るリンクを 張りたいと思っているのですが、 URLはどのようにすればよいでしょうか? 絶対パスではなく、相対パスでお願いしますm(__)m

    • ベストアンサー
    • HTML
  • 拡張子の無いファイルをHTMLとして動作させる方法

    サーバ上に拡張子の無いファイルがあり、 このファイルに直接アクセスされた場合、HTMLとして表示する為の 方法を模索しております。 現状、各ディレクトリに「拡張子の無いHTMLファイル」と 「拡張子のあるHTMLファイル」が混在しております。 例)  /hoge   index.html(拡張子のあるHTMLファイル)   moge.html(拡張子のあるHTMLファイル)   moge01(拡張子の無いHTMLファイル)   moge02(拡張子の無いHTMLファイル) InternetExplorerでアクセスすると問題なく表示されますが、 Firefoxでアクセスすると、テキストとして(ソースが)表示されてしまいます。 上記症状からMIMEタイプの設定かなと思うのですが、解決出来ておりません。 知りたい方法に関する条件としては ・「.htaccess」ファイルで設定できる方法(httpd.confはいじれない為) ・上記例の「moge01」、「moge02」の様に複数のファイルに対応できる方法 ・上記例の様に、拡張子のアリ・ナシ混在で対応できる方法 実際のアクセス方法としては、それぞれ  ・http://hogemoge.com/hoge/moge.html  ・http://hogemoge.com/hoge/moge01(or http://hogemoge.com/hoge/moge01/) の様になります。 なお、いろいろと事情があり、「手作業で拡張子を付ける」という方法は 非現実的となってしまう為、それ以外の方法でお願い致します。 以上、解決方法に心当たりのある方、宜しくお願い致します。

  • index.htmlファイルのないフォルダの中身が丸見えになってしまう

    ホームページの作成にさくらのレンタルサーバを使用しているのですが、新たにアップロードしたディレクトリにindex.htmlのファイルを入れず、直にそのディレクトリへアクセスすると、ディレクトリ内のファイルの一覧が表示されてしまいます。 例えばサイトのアドレスが「http://○○.××.ne.jp/」だとして、そのディレクトリ内には ・index.html ・top.html ・pict.html ・pict/ というファイルとフォルダ入っているとします。 pictフォルダ内にはhtmlファイルは設置せず、画像のみをアップロードします。 すると「http://○○.××.ne.jp/pict/」または「http://○○.××.ne.jp/pict/index.html」にアクセスすると、フォルダの中に入っている画像名がずらっと表示されてしまい、画像名をクリックするとその画像を見ることが出来てしまうのです。(index.htmlファイル以外にhtmlファイルがある場合はそのファイルも表示されます) .htaccessで401、403、404、500それぞれのエラーページを作成してみましたが、index.htmlには反映されず、困っています。 出来ればindex.htmlファイルを設置していないフォルダにアクセスした場合も、404のエラーページを表示させたいのですが、どうすればいいでしょうか。 サーバ側の設定がかわらない限り個人では変更が出来ないのでしょうか? ご存知の方がいらっしゃいましたら、是非ご回答くださいませ。 宜しくお願い致します。

  • インデックスファイル名を知るには?

    /(スラッシュ)で終わっているURLの場合、 インデックスファイル名を知るにはどうすれば よいのでしょうか? たいていはindex.html,index.phpなどですが、 違う場合がときどきあります。 ソケットなどを使うプログラミングの手法 でもかまいません。ご教授ください。

    • ベストアンサー
    • HTML
  • フォルダとファイルの一部が忽然と消えた!

    OSは、Windows Vista を使っています。 urlリンクファイルを数種類のフォルダに分類して保存していた のですが、ある日それらのフォルダのすべてが突然自然消滅して いるのを発見しました。フォルダの中のurlリンクファイルは 消えたフォルダの外に”投げ出され”ていました。さらによく 調べると、保存していたurlリンクファイル自体も一部消滅 していました。 何か変わった出来事があったかといえば、ネット接続を光ファイバー 回線に変更したくらいです。 気色悪くて不安です。いったい何が起きたのか心当たりの方、 お教えください。よろしくお願いいたします。

専門家に質問してみよう