2009-09-03 14 views
4

と互換性の相対パスを定義するには、次のディレクトリ構造を検討:PHP:HTMLタグ

  • ROOT
  • ------ 画像
  • を.......... ..... logo.png
  • ------
  • ............... vars.phpを含み
  • ------ レイアウト
  • ............... content.php
  • ------ index.phpを私はのindex.phpCの両方でアクセスvars.phplogo.pngのパス定数を定義するにはどうすればよい

ontent.php?相対パスとしてHTMLタグと互換性がある必要があります。

<img src="images/logo.png"> <!-- if used in index.php --> 

として解析する必要があります

<img src="<?php echo IMAGE_PATH; ?>"> 

<img src="../images/logo.png"> <!-- if used in content.php --> 

新しい質問(EDIT):/を含ん使用してPHPファイルを含むルート相対パスの作業を行いますメソッドが必要ですか?

+1

絶対パスを使用する必要があります。 – rogeriopvl

+0

なぜそれは静的ではありませんか?どうして絶対パスを提供できないのですか? – Havenard

+0

しかし、私はディレクトリパス(c:\ Hosting \ j349j \ html \ images \ logo.pngのような)を取得します。これはphpには正常に動作しますが、htmlタグには失敗します。また、http://domain.com/images/logo.pngのような絶対的なWebパスは、これはイメージ/スタイルシートを含む推奨された方法ではないと思っていました。 – HyderA

答えて

4

としてすべてのパスを指定します。

すべての画像、CSS、およびJSファイルは、アドレスバーのURLの代わりにこれを使用します。

define('APP_URL', 'http://example.com/path/to/app'); 
echo '<img src="'.APP_URL.IMAGE_PATH.'">'; 

するか、それがより便利に、絶対URLにあなたの相対URLを解決する関数を記述持っている:

Info on base

+0

そして、URLは 'images/blah.png'のようになり、先頭に'/'はありません。 – strager

+0

私はあなたの考えが気に入っていますが、モジュラーコンポーネントが関係する特定のケースでは、ルートディレクトリではなくモジュールディレクトリに相対的なパスを必要とする場合があります。 – HyderA

+0

@ gAMBooka、あなたの権利は、これらのケースはおそらくあまり頻繁に発生せず、ハードコードされている可能性があります。 – Scott

3

絶対パスまたはルートパスを使用すると、見出しの数が最も少なくなります。私を信じて、システムが成長すると、あなたはそのセットアップを後悔します。

これは完全に合法的な方法です。つまり、私は主に、お勧めしたいあなたは、ドメイン間のセットアップ心配している場合は、ちょうどの/ etc

+0

ルート相対パスではなく絶対パスが好きな理由はありますか? –

+0

ドメイン間のセットアップは問題ではありません。しかし、HTMLタグ(画像/スタイルシート)に絶対パスを使用してもパフォーマンスが低下することはありませんか? – HyderA

+0

私はそうしていると信じています。それは私が根親族を好む理由の一つです。 –

0

ドメイン/ディレクトリへの絶対パスで設定変数を作成

(あなたがコメントで尋ねるなど)ルート相対パスを使用します。これは、サイトを別のホストに移動する際の複雑さを軽減するだけでなく、(スクリプトが実行されている場所からテストするために if()条件を使用するのではなく)一貫性のあるパスを許可します。

しかし、そうでなければ、あなたの提案はうまくいくでしょう。

+0

ルート相対パスを取得するにはどうすればよいですか? – HyderA

+0

NVM、DisgruntledGoatがそれに答えました! – HyderA

3

"ルート相対"パスを使用できます。単にこれはyoursite.com上のすべてのページからhttp://yoursite.com/images/logo.pngに解決されますつまり

<img src="/images/logo.png"> 

、先頭のスラッシュですべてにリンクします。

+0

そして私の知る限りでは、「ルート相対」パスと呼ばれています。 =) –

+0

@ricebowl:いいえ、絶対パス*です。 – Gumbo

1

単にあなたのコードの<head>セクションに<base>タグを設定してみてくださいルートからの相対

<img src="/images/logo.png"> <!-- will work anywhere --> 
0

私は、アプリケーションのベースURLのようなものを使用します。

関連する問題