人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

index.phpとhogeディレクトリ内にあるsab.phpというファイルから
commonディレクトリ内のlayout.cssとconfig.phpを使う場合、
ルートパスが使えるならどちらのファイルにも、
<link rel="stylesheet" type="text/css" href="'. URL.'/common/layout.css" />、
include('/common/config.php')とか記入すればいいと思うのですが、
さくらサーバー、ローカルともうまういきません。
しかし相対パスを使ってしまうと、
階層のファイルごとにパスを変更するのも面倒です。

xamppとさくらサーバー及びさくらでルートパスをうまく使う方法、
あるいは別の代替案をおしえてください。

環境はwindows7、xampp、PHP5、DreamWeaverCs5.5です。
以上よろしくお願いします。

●質問者: taroemon
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● oil999
●50ポイント

PHP の $_SERVER['DOCUMENT_ROOT'] でドキュメントルートを取得してはいかがですか。


2 ● rouge_2008
●50ポイント ベストアンサー

HTMLの場合、絶対パスは利用できません。
「/」から始まるパスを記述した場合、WEBルートからのパスとして正しく解釈されますので、次のように記述するだけで適用されます。(※CSSだけでなくaタグによるリンク等も同じです。)

<link rel="stylesheet" type="text/css" href="/common/layout.css" />

※「http://?」から記述する必要はありません。


PHPなどのCGIでは、「/」から始まるパスは絶対パスとして解釈されますので、「$_SERVER["DOCUMENT_ROOT"]」が利用できます。

include($_SERVER["DOCUMENT_ROOT"] . '/common/config.php');

taroemonさんのコメント
ご回答ありがとうございます。 PHPに関してはXamppを使用してますので、ルートはhtdocsになってしまいます。 サイトごとにディレクトリ分けしてますので、 hogeサイトの場合、httdocs内の「hoge」内の「common」内のconfig.phpをincludeしたいです。 さくらの場合は大丈夫でした。 一方で、HTMLの場合はローカル、サーバーともにダメでした。 たぶんおなじ理由でドキュメントルートの指定がうまく言ってないようです。 さくらのドキュメントルートは「/home/ユーザー名/www/」だからかもしれません。 まったくもって私の説明不足で申し訳ありません。 これらの問題を解決していただけるとありがたいです。 さらなる回答をお待ちしています。

rouge_2008さんのコメント
バーチャルホストの設定をしていないのが原因ではないかと思います。 「apache/conf/extra/httpd-vhosts.conf」で、デフォルト設定を参考にしながら設定してみてください。 >|| # Use name-based virtual hosting. # NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin postmaster@localhost DocumentRoot "C:/xampp/htdocs" ServerName localhost ErrorLog "logs/localhost-error.log" CustomLog "logs/localhost-access.log" combined </VirtualHost> <VirtualHost *:80> ServerAdmin postmaster@localhost DocumentRoot "C:/xampp/htdocs/hoge.localhost" ServerName hoge.localhost ErrorLog "logs/hoge.localhost-error.log" CustomLog "logs/hoge.localhost-access.log" combined </VirtualHost> ||< ※Xamppのインストールディレクトリに合わせてパスを変更する必要があります。 ※hostsファイルに「hoge.localhost」等を追加する必要があります。 http://httpd.apache.org/docs/2.2/ja/vhosts/examples.html さくらに関しては、ドメイン(サブドメイン)の追加時に対象ディレクトリを指定すると思いますが、この時に自動で設定されているのではないかと思います。 その為、PHPでは正常に動作したのだと思いますが、ドメインとドキュメントルートの設定が正しく行われている場合、HTMLでのWEBルートからの相対パスも利用できるはずです。 記述間違いがないか、再度HTMLコードを確認してみてください。

taroemonさんのコメント
丁寧なご回答ありがとうございます。 まだうまく行ってませんが、 いただいたご回答を元に試してみようと思います。 うまくいきましたらご報告させていただきます。

rouge_2008さんのコメント
その後解決したでしょうか? どの部分が上手くいかないのか、設定など動作環境と動作状態を詳しく教えていただければ、何か分かるかもしれません。 .htaccessに何か設定をしているか、あるいはフレームワークを使用していて、その影響という事はありませんか?
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ