• ベストアンサー

PHPでリンクを書きかえるか、baseタグを使うかどちらが良いか?

PHPを勉強しはじめた初心者です。 サイトに常に表示されているサイドバーをPHPでincludeすることにしました。 なのでページの階層によって、適宜リンクを書き換える必要があります。 私が思いつく方方法は3つほどあります。 (1)階層ごとに毎回PHPでリンクを書き換える。 (2)baseタグを使って、相対リンクの基準を一か所に固定する。 (3)絶対パスでリンクをする。 私としては(1)でやろうと思っていたのですが、なんとなく無駄が多いような気がしました。 ということで、(2)の方法で行こうと思っているのですが、baseタグを使うのはあまり気が進みません。 baseタグを使った例を今まで見たことがないので、そう思ってしまうのですが、常にサイドバーを表示させるような場合は、皆さんはどのようにしているのでしょうか? 他にもっと一般的な方法や、効率的な方法がありましたら、教えていただけると幸いです。よろしくお願いします。

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

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

  • ベストアンサー
  • nkzw_spl
  • ベストアンサー率75% (6/8)
回答No.1

(3)で解決しています。 ただ、http://~の絶対パスの記述ではなく。 <a href="/test.php">のような、「/」から始まるタグで書いています。 また、階層をなるべく分けないようにしています。

aiueo667
質問者

お礼

アドバイスありがとうございました。 とても恥ずかしいことに、今まで「/」から始まる絶対パスを知らず、httpから始まるのは絶対URIと言うそうですね、勉強になりました……。感謝します。 それで、さらに質問なのですが……、ローカルでPHPの動作確認をする場合は、http://localhost/ で確認をしています。 しかし、複数のサイトを運営しているため、http://localhost/サイト名/~ でサイトを管理しています。「/」から始まる絶対パスではローカルでうまく動作確認をすることができません。 何か解決策はないのでしょうか? nkzw_spl様のおかげで、かなりの疑問が解決されているのにも関わらず、追加で質問してしまい申し訳ありません……。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

そういうのはinclude_pathを使うとらくになりますよ。 http://jp.php.net/manual/ja/ini.core.php#ini.include-path

aiueo667
質問者

お礼

貴重な情報ありがとうございます。 とても画期的な方法ですね!今までの悩みがすべてなくなりました。 本当にどうもありがとうございました。感謝します!

関連するQ&A

  • <BASE>タグを特定の部分のみ使用したい。

    ホームページ上のデータファイルをまとめて1つのフォルダに入れているのですが、<BASE>タグでベースとなるURLをデータフォルダのパスにしてリンクはデータ名だけにしたいと思います。 こうすることでぱっと見でも多少リンク先がわかりにくくなるのと、相対リンクの..などをなくすことができ軽量化をしたいです。 ただ<BASE>タグを使うとその他のリンクも全てベースからのURL記述になるので不便です。特定部分だけ<BASE>タグを反映させることはできるでしょうか? データというのは動画なのでobjectやembedタグで指定しています。このタグだけ<BASE>タグが有効になればいいです。

    • ベストアンサー
    • HTML
  • baseタグと各種ブラウザについて

    baseタグと各種ブラウザについての質問です。 あるブラウザで各種HTMLタグにおけるhref属性の様な文字列を送信した場合で、かつ、送信先ページに値部分と同じURLを持つbaseタグが記述されている場合、baseタグが認識されないといった問題に直面しています。 具体的には次のページのような感じです。 http://true-web.org/test/test_base.php Chrome、Safariなどで1番を送信した場合、baseタグが認識されず、相対パスで指定した画像が表示されなくなります。 (IEとFirefoxは問題なし) ※ソース http://true-web.org/test/test_base.txt それで、質問なのですが、この事象はブラウザ側のバグなのでしょうか? もしバグでないとしたらBaseタグは使わないほうがいいのでしょうか? 考え方を教えてください。 よろしくお願いします。 ブラウザのバージョン IE8.0 Firefox5.0.1 Safari5.1 Chrome16.0.912.63 m OS Windows XP home sp3

    • ベストアンサー
    • HTML
  • php インクルードincludeした時のパス

    phpにてincludeした時のパスで躓いています。 現在のツリーは以下の様になっています。 index.html common  ├header.html  ├footer.html  ├right.html  ├img   ├navi-home.jpg   ├navi-1.jpg  ├css   ├base.css salon  ├hair    ├kari     ├index.html     ├access     ├ ├index.html     ├menu     ├ ├index.html この中の../hair/kari/index.htmlの中に ../common/header.html及びfooter.htmlを <?php include_once(dirname(__FILE__).'/../../../common/header.html'); ?> にてインルードしています。(書き方あってます?dirname(__FILE__).いります?) つぎに../hair/kari/access/index.htmlの中にもインクルードします。 <?php include_once(dirname(__FILE__).'/../../../../common/header.html'); ?> という風に一つ下の階層なので../を付け足しました。 このようにページ毎にheaderまでの相対パスが違うので、そのページ毎にパスを書き換えていかなければいけないものなのでしょうか? また../始まりではなく/始まりでないと表示されません。 /始まりは絶対パスでしたっけ? この書き方は間違っているのでしょうか? そして最後に、 ../common/header.htmlの中の画像ファイルやリンクは <img src="/common/img/navi-home.jpg"> の様に書かないと、インクルードしたファイル側で表示されません。 これも同じように/始まりのこの書き方でいいのでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • メニューをincludeして、階層が変わっても相対パスで可能

    こんにちは。 メニューをincludeしたんですが、 階層が変わると リンク先が相対パスでは上手くいかなくなるのですが、何か良い対策はありませんか? 絶対パスでいくしかないでしょうか?

    • ベストアンサー
    • PHP
  • include_pathに絶対パスを使うことはできないのでしょうか?

    include_pathに絶対パスを使いたいと思っています。 本当は php_value include_path "/common/php" としたいところですが、上手くいかなかったので php_value include_path ".:common/php:../common/php:../../common/php" として、ほとんどの階層からの相対パスを指定することで、上手く動くようになりました。 しかし、どうしても絶対パスで指定したいです。他のサイトでinclude_pathを調べても、どこも絶対パスでやっています。私は何がいけないのでしょうか……?

    • ベストアンサー
    • PHP
  • include,requireで外部URLの呼び込み

    include,requireのどちらでもいいのですが、別ドメイン或いは同ドメイン内における違う階層のファイルなど(例えば外部のhttp://www.ooxx.sample)を呼び込む際に、呼び込み先のリンクや画像パスが相対バスではうまくいきません。呼び込み先のリンク、画像パスを絶対URLにすれば問題ないと思いますが、作業が困難になるので避けたいです。 PHPでinclude,requireの使い方は向かないのでしょうか?或いは、他の方法で回避できる方法はないのでしょうか? (SSIやHTMLでインラインフレームみたいなことは使わない)

    • 締切済み
    • PHP
  • Webページの共通部分をPHPで記載する方法

    ホームページの作成の際に、各ページの共通部分、例えばヘッダー等を phpファイルを作成しておいてrequireする時について質問です。 header.phpファイルに共通するヘッダーを記載しています。 このファイルの中には<a href="./****">というようなリンクや <img src="./***">というイメージのパスが相対パスで記載されていますが、 各ページの階層が違う場合には、このまま取り込んでしまうと、 各階層によって相対パスは異なるので、うまく表示されないのですが、 requireされたページによって、こういった部分を書き換えることは、 可能なのでしょうか? それとも絶対パスで書かなければならないのでしょうか? 初歩的な質問で申し訳ございませんが、ご教示願います。

    • ベストアンサー
    • PHP
  • htmlの中にssiでphpを表示させる方法について

    いつもお世話になっています。 タイトルにもありますが、htmlファイルの中でphpの実行内容を表示させたいと思っています。 htaccessでhtmlでもssiが動くように設定してあるので、htmlの中でssiを使用してphpを呼び出す事はできるでしょうか? <!--#include virtual = "~.php" --> <!--#include file = "~.php" --> 上記のように試してみたのですが、「[an error occurred while processing this directive] 」と表示されてしまいます。 この記述方法で間違っていないと思っていたのですが、どうしても上手くできません。 phpまでのパスを相対パスや、絶対パスで指定してみましたが、やはりダメです。 表示させたいphpは、直接アクセスするとちゃんと表示されます。 またphpのパーミッションは644となっています。 アドバイスを御願い致します。

    • 締切済み
    • PHP
  • includeのパス指定は"/"で始められない?

    こんにちは。php5でウェブアプリを作っています。 いろんな階層からincludeされるファイルの中にさらにincludeを記述しているため、相対パス指定ではなく、ドキュメントルートからのパスを include("/top/hoge/aaa.php"); のように書きたいのですが、こうすると読み込んでくれません。includeではこういう指定は出来ないんですか? みなさんどうなさってますでしょうか。includeファイルの中のinculdeのパスの指定…。

    • ベストアンサー
    • PHP
  • /usr/local/lib/phpとはどういう意味ですか?

    include_pathを設定して、どのディレクトリからも用意にphpをインクルードできるようにしたいのですが、.htaccessへの書き方やパスの書き方があまりにもわからないので質問させていただきました。 PHPの勉強を始めたのは最近で、私の知っているパスはこれだけ。 1 http://~から始まる絶対URI?パス? 2 ./ とか ../ などの相対パス。 の2つだけ。 include_pathについて、検索エンジンで調べるとほとんどのサイトで次のように書いてありまして、私にはよく分かりません。 php_value include_path ".:/usr/local/lib/php" まず、include_pathの書き方はこのようで良いというのはわかりましたが、/ から始まっているので、httpなくていいの?..なのか.なのかどっちなのかもわからない、初めて目にしたもので……。 PHPの勉強をしていると、よく/から始まるURLをみるのですが、これについて説明しているところが見当たらず、当り前の知識のような感じなのでしょうか? これらについて、教えてください。

    • ベストアンサー
    • PHP

専門家に質問してみよう