ホームページの作成の際に、各ページの共通部分、例えばヘッダー等を
phpファイルを作成しておいてrequireする時について質問です。
header.phpファイルに共通するヘッダーを記載しています。
このファイルの中には<a href="./****">というようなリンクや
<img src="./***">というイメージのパスが相対パスで記載されていますが、
各ページの階層が違う場合には、このまま取り込んでしまうと、
各階層によって相対パスは異なるので、うまく表示されないのですが、
requireされたページによって、こういった部分を書き換えることは、
可能なのでしょうか?
それとも絶対パスで書かなければならないのでしょうか?
初歩的な質問で申し訳ございませんが、ご教示願います。
No.3ベストアンサー
- 回答日時:
これの正しい呼び方はイマイチよくわかってないですが、「/」から始まるパスは、ドメイン以下のディレクトリパスとしては、絶対パスになりますね。
http://www.example.com/img/test.jpg
は、
/img/test.jpg
と表すし
http://www.example.com/subdirectory/img/hoge.jpg
は、
/subdirectory/img/hoge.jpg
になります。
Windowsでは表示されないということですが、ApacheなどのWebサーバ上から確認されたのであれば、
OSは関係なく動くと思いますので、記述したパスが間違っているのではないでしょうか。
No.2
- 回答日時:
相対パスの書き方として、「/」から始まるパスで記述してやればさほど気にならないかと思います。
img/header_logo.jpg
という画像があったとして
index.html
contents/page1.html
というコンテンツがある場合、
<img src="/img/header_logo.jpg" />
とIMGタグを記述してやれば、
contents/page1.html
で呼んでやっても、
index.html
で呼んでやっても、画像が表示されます。
index.htmlでcontents/page1.htmlのリンクタグを入れる場合も、
<a href="/contents/page1.html">リンク</a>
といったように記述してやれば、正しくリンク出来ます。
といった方向で記述するのが最も簡単かなと思いますが、いかがでしょうか。
ご回答ありがございました。
私はあまりというか、ほとんど”/”から始まるパスを書いたことが
無いんですが、これは絶対パスと考えていいんでしょうか。
現在はWindows上で作成してWebにはアップしていないんですが、
”/img/*****”だと上手くいきませんでした。
Windows上で”/”から始まるパスを書く場合は環境変数に
追加しなければならないんでしょうか。
であれば、Web上であれば上手くいきそうですよね。
ご教示ありがとうございました。
No.1
- 回答日時:
一番手っ取り早いのは、やはり各階層毎にイメージファイル等を
アップロードすることだと思いますが、質問内容を見る限り
膨大な数のファイルがあるのですよね?
となれば、率直に思いつくのは画像のディレクトリまでのパス自体を
変数としてセットしておいて、実際に画像を表示するパスを
変数を含めたパスとして扱うようにすれば良いのかと思い・・・
例えばこの様な感じで
--------------------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
// 画像のディレクトリまでのパス
$a = "http://www.ドメイン/image";
// 画像の表示
echo "<img src= $a/home_main.png>";
?>
</body>
</html>
--------------------------------------------------------------------
【 $a = "http://www.ドメイン/image"; 】
この構文さえ各ファイルに記述しておけば、たとえどんなに深い階層に
ファイルを設置しても、呼び出しには行ってくれますよね。
( 事実上絶対パスなので、当然ですが )
こうすると、リンクの呼び出しも同じ要領で出来ますよね。
この様な方法で効率的なのかどうなのか、ですが・・・
時間があるのでしたら、if文等の条件分岐で実装してみるのも面白いかも
しれませんね。
とりあえず簡単に思いついた方法ですので、参考までに。
ご回答ありがとうございました。
仰っていただいた通り、画像が大変多く、階層もかなり多いんので、
各階層毎に画像をアップするのはつらいかと・・・・
変数として用意すれば、いいんですね!
私が一応最終的に選択したのが下記の方法なんですが・・・
1.共通のヘッダーファイルをPHPで作成。
2.絶対パスと絶対パスを渡すと、その相対パスを求める関数含めた
ファイルを作成。
3.共通ヘッダーファイルでは、呼び出しファイルの絶対パスと、
共通で使用するファイル(画像、スタイルシート、JavaScriptシート、
リンク等)の絶対パスを渡して、呼び出し元から共通ファイルへの
相対パスを求めて、呼び出されたファイルによって動的に相対パスを
作成して、記載。
こうすると共通のヘッダーファイルだけ変更すれば、全てのページに
反映されてメンテナンスは簡単なんですが、最初の作成が
多少面倒ですし、王道ではない感じがします。
それとページが呼び出された際に、まずヘッダーファイルをrequireして、
ヘッダーファイルでは、相対パスを求めるファイルをreqireしますが、
これはページの読み込み速度に影響するのでしょうか・・・・
多少遅くなったような感じが、気のせいかもしれませんが・・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS Dreamweaver のテンプレートでの相対パスの設定について 2 2023/06/13 17:28
- ホームページ作成・プログラミング ホームページ作成について。「ワードプレスではありません」。 3 2023/08/13 14:44
- その他(IT・Webサービス) 301リダイレクトの使い方について 7 2022/04/05 17:50
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- JavaScript [再掲]指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードについて 1 2023/05/10 15:09
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- HTML・CSS インクルードした要素がヘッダーにかぶってしまう 3 2022/09/13 17:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
index.phpって何ですか? 具体...
-
HPを開くとダウンロードページ...
-
社内イントラネットのHPにアク...
-
php excelダウンロード
-
かなり重い処理をする方法
-
PHPのWARNINGをcatchするには
-
フォントの色を変えるには?
-
phpでPEAR::DBを使っているので...
-
別ファイルの変数を呼び出した...
-
onedrive にexcelファイルをア...
-
PHPのif文でその処理を途中で抜...
-
バッチを用いたフォルダの自動移動
-
現在位置より2つ上のディレク...
-
CSV出力にHTMLが入ってしまう
-
「クラス関数」「メンバ関数」...
-
phpでメール送信できません 原...
-
one drive のアップロード失敗...
-
さくらサーバーにて、phpからメ...
-
index.phpに入るには、どうすれ...
-
php.ini を設定を変更すると再...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
社内イントラネットのHPにアク...
-
file_get_contents()の動きが読...
-
HPを開くとダウンロードページ...
-
phpのheader関数でページ移動さ...
-
jsファイルがうまく読み込めない
-
includeで読み込んだ内容を変数...
-
phpコードの戻り値をhtmlファイ...
-
VScode文字の色の変更について
-
CSSが反映されない場合がある
-
PHPでの複数ファイル出力
-
HYMLファイルの書換えに伴う文...
-
ヒアドキュメントの中で別ファ...
-
トップページURLのみで下層ペー...
-
phpで大量のhtmlを任意の順番で...
-
Smartyを使ってhtmlファイルを...
-
phpでAuthorizationヘッダを追加
-
public_htmlと同じ階層にあるフ...
-
PHPファイル内でCSSが反映されない
-
かなり重い処理をする方法
-
PHPをhtmlに読み込んだファイル...
おすすめ情報