
構造は以下のとおりです。
ルートディレクトリ
│
├ index.php
├ php(フォルダ)
│ └ a.php
│
├ html(フォルダ)
└ menu.html
└ b.html
└ c.html
メニューと実際のコンテンツを分けようと思い、index.phpでrequireを用いて、実際のコンテンツである「b.html」とメニューである「menu.html」を読み込んでいます。
メニューには、A href="php/a.php"という具合にリンクを貼っています。
「c.html」に飛ぼうとする際は、a.phpにリンクを貼り、そこで「menu.html」と「c.html」を読み込むという具合です。
その際、一度目(ルートディレクトリ基準)は正常に読み込みます。
その際のパスはhttp://省略/php/a.phpです。
しかし、a.phpに飛ぶと、a.phpを基準にしたパスになってしまいます。ですから、a.phpで再びmenuのリンクをクリックしてa,phpに飛ぼうとすると、パスが
http://省略/php/php/a.php
となってしまって上手く読み込めません。
分かりにくい説明で申し訳ありません。
これを解決するには、絶対パスを使って指定するしかないのでしょうか?
No.1ベストアンサー
- 回答日時:
そういった時、私は絶対参照を指定するようにしています。
但し、カレントURLがズレるから悪いのだから、ズレない
URLを持ちます。
必ず読み込むconfig用ファイルを用意し、その中にルートURLを
定義して、リンクを記述するhtmlファイルをphpファイルに
変更して、リンク指定に、ルートURLを指定した上でphp/a.phpと指定します。
config.php
define(ROOT_URL, "http://localhost/");
c.php
<a href="<?= ROOT_URL ?>php/a.php">~</a>
という感じに。
環境が変わりURLに影響があったら、config.phpを
変更するだけで対処可能です。
というのを、昔やりました。
実際の処理にPHPを利用しているのだから、htmlしか
出力しないからhtmlファイルとしていても、PHPとして
動作させたって支障はないはずです。
回答ありがとうございます。
経験に基づく具体的な方法を示していただき、参考になります。
調べても、解決策が出てこないので、この方法でいこうかと思います。
ありがとうございました。
No.2
- 回答日時:
a.phpにも
<a href="php/a.php">a.php</a>のようなリンクが張っているのでしょう?
やはり絶対パスを使って指定するほうがいいと思います。
どうしても相対パスを使いたければ、a.phpでパスの判断が必要ですね。例えば
$currdir = getcwd();
if( preg_match("/(\/php)$/", $currdir ) echo "a.php";
else echo "php/a.php";
以上のプログラムはイメージです。動くかどうか確認していません。
ご参考まで
回答ありがとうございます。
やはり絶対パスを使うのが懸命なようですね。
おとなしく絶対パスを使用したいと思います。
相対パスの際のプログラムのイメージも記述していただき、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
includeにより他の部分が表示さ...
-
phpの階層が変わると上手く読み...
-
PHPのif文でその処理を途中で抜...
-
onedrive にexcelファイルをア...
-
Makefile.inとMakefile.am
-
FTPコマンドでディレクトリごと...
-
画像ファイルの名前をそのままU...
-
.htaccessにphp_valueが使用できな
-
出力エンコードと内部エンコー...
-
PHPファイルが表示されない
-
セッションについての設定なの...
-
オブジェクトの中の関数を共通...
-
ファイル一覧を表示しその画面...
-
phpからImageMagickの使い方
-
モバイルサイトでFXチャートを表示
-
タイマー機能を使って指定時間...
-
ある条件に当てはまったときに...
-
メール送信できない
-
CRON でPHPスクリプトをGET変数...
-
URLをたたく賢い方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
nl2bの代用関数を何か知ってい...
-
htmlでphp(WordPress)を動かす
-
EZwebからphpのページを見るこ...
-
path文字列の操作
-
includeでHTMLファイルを呼出し...
-
階層が違う場合の絶対パス相対...
-
電通のタブーとは
-
botを作っているのですが、oaut...
-
「旭日中綬賞 」とはどんな賞で...
-
centos6のlogにscript not foun...
-
携帯で携帯サイトを閲覧すると...
-
PHP file_get_contents 503 ser...
-
htmlの書き換え
-
SSI される .inc ファイル内に ...
-
COOKIEの保存がうまくいかない
-
phpとhtmlについて分からない部...
-
xhtmlサイトでPHPタグをhtml拡...
-
PHPでheader情報がうまく表示で...
-
xrea+ と 開発環境 とで .htacc...
-
ページに読み込みたい
おすすめ情報