kari.htmlにある内容のボックスがあるとして、
それはCSSでデザインされ、画像も入っています。

この下の階層の
menu.htmlの中にkari.htmlで使ったある内容ボックスの同じものがまるまる入ります。

なので、kari.htmlの内容を更新してコピーしてmenu.htmlにもはります。

この場合、画像やCSSを相対パスではなく、絶対パスにしておくと、階層が異なっても
きれいに入ります。

../からではなく、/から始まるパスです。

このやり方は間違っているのでしょうか?
同じようにページ、階層を渡って共通部分には絶対パスをしています。
こういうふうに使い分けしていくものでしょうか?

phpでインクルードしてもいいんですが、他にもインクルードが多々あるので、
ページ内でそんなにインクルードあってもいいものかと思いまして。。(勝手な勘違いでしょうか?)


宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

間違いではないですし、使い分けもいいでしょう。


フレームワークのように全体をシステム化すれば絶対パスになるのも普通です。
全体の階層が変わることはあまりないでしょうが、例えば
css_path('/path/to/style.css') など関数を挟めば階層ダウンにも対応可能です。
ただ、なるべく仕様は統一した方がよいです。
CSSの中なんかは相対の方がいいかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
全体の階層は変わることはないです。
そのために、”今”きっちりと階層とパスの関係を構築しています。

CSSの中は相対パスです。
(背景画像の指定とかですよね?)

一応相対パスと使い分けしています。

ポータルサイトなので、
同じ作りのページが数十ページならびます。
またお店ごとにディレクトリを設けます。
なので、画像の名前、imgフォルダなどの各フォルダ名を一緒にしておくと、
相対パスで作った時にお店のデータのファルダをコピーし名前を
変えるだけで、中の情報が全て、変わるので便利です。

絶対パスはコピペとかで移動する場合があるところ、
階層が違うけど、共通で入っているリンクなどに使っています。

これが正しかったのか、どうなのか不安でして。。


今まで絶対パスは外部リンクにしか使ってこなかったので、
新しい試みで疑問でした。

お礼日時:2011/04/11 16:29

>画像やCSSを相対パスではなく、絶対パスにしておくと、階層が異なってもきれいに入ります。


この文の意味がいまいちわかりかねますが、

絶対パスと相対パスの考え方の基本は、
絶対パスは環境に依存しやすいのに対し、相対パスは環境に依存しにくいと言う事です。
すなわち、絶対パスで指定する場合はその環境固有の設定であるとか、恐らくどの環境を用いても共通であろうと思われる環境に対して指定します。

それに対して、相対パスと言うのは環境に依存しにくいですから、例えばWeb環境をごっそり他の環境に移行しても相対パスで指定してあれば、そのままWeb環境が再現できる事になります。

今回は、たまたまWeb環境ですが、例えば、自作のプログラムがありヘッダーファイルをインクルードする記述を絶対パスで書いていては、環境が変わる毎にその絶対パスを書き直さないといけません。ソースコードのバージョン管理をしていても、バックアップをしていても同じような事が言えます。
Linuxであればマウントされるフォルダーが変わってしまえば絶対パスで書いていたらその都度書き直さないといけない事になります。

すなわち、ApacheやPHP本体に関しては固定パスにインストールされるので、環境を変えた際違うパスにインストールした場合は、本体を参照している部分については書き直しが必要ですが、それ以外の自作のPHPやCSS、HTMLなどに関しては相対パスで記述した方が無難です。

相対パスで問題が出るようであれば、相対パスで問題が出ないようなフォルダー階層に構成しなおした方がより柔軟性が出ると思います。

一人、かつ、Web環境で作業するだけですとなかなか、この相対パスの重要さが見えてこないですが、複数人でいろいろな作業をしてくるとだんだん見えてくる事かと思います。

ご参考までに。
    • good
    • 0
この回答へのお礼

ありがとうございます。

>画像やCSSを相対パスではなく、絶対パスにしておくと、階層が異なってもきれいに入ります。

すいません、階層が違ったところにボックスごとコピペしても
パスを変えることなく、きちんと表示できるということです。

お礼日時:2011/04/11 16:19

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qコンピューターの”階層”と”環境”を英語で言うと?

英語でコンピューターのフォルダの“階層”は何といえばいいのでしょうか?
“これらのファイルはXXXと同じ階層に置いてください”というようなことを伝えたいと思っています。 また、上の階層、下の階層はそれぞれ“Upper, Lower”でいいのでしょうか? 2つ上の階層、3つ下の階層はなんと表現すればいいのでしょうか?

もうひとつ、コンピューターの“環境”(OSやハードウェア、使用ソフトなど)は何といえばいいのでしょうか?
“問題がある場合はそちらの環境を教えてください”というようなことを伝えたいと思っています。

よろしくお願いします。

Aベストアンサー

こんにちわ。
ソフトウェア会社でローカライズをしています。私にとっては日常用語の「階層」です。定訳は「hierarchy」です。
今やっているマニュアルにも、hierarchyっていう単語の
オンパレードです。USのライターがhierarchyと表現しているから、これは間違いありません。

上の階層であれば、hierarchy one level up
下の層であれば、hierarchy one level down

と表現したほうがクリアです。階層の深さはマチマチなので、upperやlowerと漠然と表現するよりも、基準の位置からいったいどれくらい離れている階層なのかを明確に数字で表現したほうが読み手にとっても分かりやすいです。

だから、
2つ上の階層であれば、hierarchy two levels up
3つ下の階層であれば、hierarchy three levels down

でいいと思います。

あと「環境」は、日常生活ではenvironmentですが、
コンピュータの世界でも一緒です。コンピュータの世界には、この手の単語がたくさんあります。日常生活で使われている単語なんだけど、特殊な意味を持つものが。

“問題がある場合はそちらの環境を教えてください”は、

If you have any problems, please let us know what environment you are using.

で十分、通じると思います。

以上、ご参考になればと思います。

こんにちわ。
ソフトウェア会社でローカライズをしています。私にとっては日常用語の「階層」です。定訳は「hierarchy」です。
今やっているマニュアルにも、hierarchyっていう単語の
オンパレードです。USのライターがhierarchyと表現しているから、これは間違いありません。

上の階層であれば、hierarchy one level up
下の層であれば、hierarchy one level down

と表現したほうがクリアです。階層の深さはマチマチなので、upperやlowerと漠然と表現するよりも、基準の位置からいったいどれくらい離...続きを読む

Qphp正規表現 相対パス→絶対パス

下記のようにhtml内の相対パスの箇所を、
全て絶対パスに置換えるにはどう記述したらよいでしょうか?
ご伝授いただけたら幸いです。
<a href="/test/jp/danny.pdf" target="_blank">
<img src="/cmn/img/text.gif">
  ↓↓
  ↓↓
<a href="http://testsaite.co.jp/test/jp/dammy.pdf" target="_blank">
<img src="http://testsaite.co.jp/cmn/img/text.gif">

Aベストアンサー

$data=file_get_contents(URL);
preg_replace ('/(=\"\/)+?/mi','=\"http:\/\/testsaite\.co\.jp\/',$data);
echo $data;

Q【英語】webページの「第二階層」

webページの「第二階層」て何て言うのがふさわしいですか?
two level
second class
・・

色々調べたのですが分からず、教えていただきたくお願いします!

Aベストアンサー

添付辞書の用例で


a second directory hierarchy

•The second directory belongs to a second directory hierarchy which is lower hierarchy than the first directory hierarchy.

第2ディレクトリは、第1ディレクトリ階層よりも下位の第2ディレクトリ階層に属する。


http://www.sophia-it.com/content/%E9%9A%8E%E5%B1%A4%E5%9E%8B%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E6%A7%8B%E9%80%A0

参考URL:http://ejje.weblio.jp/content/directory+hierarchy

Qメニューをincludeして、階層が変わっても相対パスで可能

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

Aベストアンサー

>メニューをincludeしたんですが、
これは、自作のものですよね。

>階層が変わると
単に、上の”メニュー”なるものが、階層を意識した作りに
なっていないからじゃないのかな!?

Q英語マニュアルの表現を教えてください

英語マニュアルで、なんて書いてありますか?

Explorerで目的のファイルに階層をたどって行く操作を、ドリルダウンって表現使いますか?

ドロップダウンでしょうか・・・・


どの様に記述されているか教えて下さい。

Aベストアンサー

Drill down until you get to this location: [ディレクトリ]

または

Click to drill down to display [ファイル名].

とかを使うこともあるようです。
きりで穴を開けていく感覚、かなと思います。

選択しなくても次にクリックする場所が操作者にわかっている時のみ使えますので
マニュアルでは「ここをクリックして」「次にここをクリックして」などのように、その都度指示をする方が多いと思います。

Q絶対パス?絶対アドレス?意味に違いはありますか?

基本的なことをお聞きします。

「絶対パス」と「絶対アドレス」という言葉がありますが、
両者は、同じような意味で使われている場合もあれば、
異なるように感じる場合もあり、一体、どういうことなのかよく分からないので、
どなたか、ご存知でしたら教えて下さい。
よろしくお願い致します。

Aベストアンサー

ひょっとして、下の例にあった「./img/hogehoge.gif」と、私が書いた「/img/hogehoge.gif」を見間違われているのではないでしょうか?

半角スラッシュで始まる「/img/hogehoge.gif」は「(http://現在のホスト)/img/hogehoge.gif」と解釈されます。
この場合、ホストを移転すればURIの指す位置が変わるため、「相対URI」です。
一方、ホスト内に限定すれば最上位から順にパスを指定しているため、「絶対パス」だと言えます。
普通Web開発では開発と運用は別ホストとなるので、HTML内の「絶対パス」は通常この形式です。
「相対パス」と呼ぶことはありません。

一方、「./img/hogehoge.gif」や「img/hogehoge.gif」などの場合は「(現在のディレクトリ)/img/hogehoge.gif」となり、現在位置に依存するので「相対パス」です。

勘違いだと思いますが念のため。

Qページ丸ごと保存するソフトの設定にある「階層」とは?

Gethtmlや巡集などのソフトの設定にある「階層」の意味が分りません。
1階層、2階層、3階層・・・と階層を増やしていくと具体的になにが変わってくるのでしょうか。漠然と階層を増やすとダウンロードするファイル数が増えるのは分るのですが

1階層、テキスト
2階層、画像  

とかでは無いですよね?

Aベストアンサー

No2です。

> / (区切り)を1階層と考えていいでしょうか
多くの単純なHPだと、そう考えていいです。

ただし、保存ソフトの使い方という面から見ると注意が必要です。
現在のページのリンク先にある、ファイルをターゲットとする場合、
リンク先自体、1階層下にあると、考えてください。

中には、プログラムで他のサーバーから、ファイルを呼び出している場合もあります。
その場合は、階層外となり、保存ソフトでは、ダウンロードできなかったはずです。
(最後の部分は、最近の保存ソフトを使ってないので、追跡機能があるかどうか自信有りません)

QHTML文書内の相対URLを絶対URLに変換する方法

現在,PHPを使って擬似的なプロクシサーバーを作成しています.
動作としては,フォームにURLを入力し,送信,受け取ったPHP側でfile_get_contentsでHTMLデータを受信し,それを出力する物です.

ところが,当然ではありますが相対URLでリンクされていると,その画像やリンク先に遷移することができません.
そこで,リンクをすべて絶対URLに置き換えたいのですが,現在では上手く置き換わりません.(置き換わらない例:https://ssl.kakaku.com/auth/id/login.asp の画像の一部など)
どなたかご教授いただけると幸いです.
よろしくお願いします.

なお,現在の処理は以下のようになっています.
使用関数 HTMLSQL,make_url(下記URLにあるgetAbsURL関数)
http://www.jonasjohn.de/lab/htmlsql.htm
http://www.phppro.jp/qa/2290
---------------------------------------------------------

// HTMLSQLオブジェクトの生成
$htmlsqlObj = new htmlsql();

// 相対URLのリンクを絶対URLへ変換
if(!$htmlsqlObj->connect("string",$html_data)) {
error("エラー",__LINE__);
}
// 絶対URL化ターゲットタグ
$target_tags = array("a"=>"href","link"=>"href","img"=>"src","form"=>"action","script"=>"src","input"=>"src");
$i =0;
while(list($key,$val) = each($target_tags)) {
if(!$htmlsqlObj->query("SELECT {$val} FROM {$key}")) {
error("エラー",__LINE__);
}
$link_array[$i] = $htmlsqlObj->fetch_array();
$i++;
}

// 絶対URL変換
for($i = 0;$i < count($link_array);$i++) {
for($j = 0;$j < count($link_array[$i]);$j++) {
while(list($key,$val) = each($link_array[$i][$j])) {
// 相対パス以外を排除
if(!preg_match("/(http:\/\/)|(ftp:\/\/)|(mailto:)|#/",$val) && $val != "/" && $val != "") {
// 絶対URL化
$full_url = make_url($url,$val);
$val_new = preg_quote($val,"/");
$html_data = preg_replace("/{$val_new}/",$full_url,$html_data);
}

}
}
}

現在,PHPを使って擬似的なプロクシサーバーを作成しています.
動作としては,フォームにURLを入力し,送信,受け取ったPHP側でfile_get_contentsでHTMLデータを受信し,それを出力する物です.

ところが,当然ではありますが相対URLでリンクされていると,その画像やリンク先に遷移することができません.
そこで,リンクをすべて絶対URLに置き換えたいのですが,現在では上手く置き換わりません.(置き換わらない例:https://ssl.kakaku.com/auth/id/login.asp の画像の一部など)
どなたかご教授いただ...続きを読む

Aベストアンサー

preg_matchに、「https://」を条件入れ忘れてるのが原因だと思います。

ちなみに、
http://simplehtmldom.sourceforge.net/
このようなものもありますので、今回の要件であればこちらのほうが使いやすいのではないでしょうか。
htmlSQLがHTMLをSQLのように取得できるのに対して、こちらはjQueryのように取得することが出来、検索した条件に値を挿入してその結果を返すことが出来るため、今回のようなpreg_replaceで書き換える手間が減るかと思います。

QSDカードの階層について

 カーナビでSDカードに取り込んだ音楽再生ができません。4階層ではなく、3階層を指定してあげれば良いということですが、階層ってなんですか?階層はどのように表示、変更ができますか?教えてください。

Aベストアンサー

階層というのはフォルダー構造のことです。
何もフォルダーが作られていない状態のとき1階層でここを特にルートと呼びます。

ルートに作られたフォルダーの中が2階層目。
2階層目のフォルダの中に作られたフォルダーの中が3階層目。
以下どんどん深くフォルダーをツリー状に作成していけます。

Qpublic_htmlと同じ階層にあるフォルダの画像ファイルにアクセスできない。

共有サーバーを利用していますが、

public_html/index.php より 一つ上のpublic_htmlの階層にあるimageフォルダの中のファイル(phpファイルとjpgファイル)にアクセスしたいのですが、phpファイルは読み込めるのですが、画像ファイルを読み込むことができません。原因が分かりません。もし何か気付きましたら教えてください。よろしくお願いします。( imgaeフォルダと画像ファイルのパーミッションは777にしています。phpファイルは644です。)

<!--index.php->
<?php
require_once("../image/HelloWord.php");
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<img src="../image/HelloWorld.jpg"/>
</body>
</html>

Aベストアンサー

> imageフォルダに同様に入れたHelloWorld.phpにechoでHello World> を書きましたが、それの場合は、public_html/index.phpのほうで読
> み込むと、表示される
当然です。
それはPHPとしてサーバ側の処理であって、HTMLがブラウザで解釈されてクライアントからアクセスされるURLとは別物です。

> 仮にバイナリーデータで得たものをHtmlに出力するという形になる
> と、どのような形が考えられますでしょうか?
画像ファイルのバイナリデータを表示する方法は、以下ページのような方法を取ります。
http://kaworu.jpn.org/kaworu/2008-04-06-1.php

ただし、当たり前ですが、画像の種類によってバイナリデータは異なりますし、その画像をバイナリデータとして表示するということは、そもそも公開して構わない情報ということになります。
また、jsファイルもファイル内容を読み込んで全てechoするというなんとも無意味な実装を取ることになります。


人気Q&Aランキング