
構造は以下のとおりです。
ルートディレクトリ
│
├ 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で質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP ECCUBE4のページ管理でPHPを実行させたい 1 2023/04/06 11:42
- PHP HTMLのINPUTから画面表示 3 2023/04/04 21:34
- MySQL htmlコードで書かれた表にphpでdbから取得した値を挿入したい 3 2022/12/21 23:48
- PHP PHPプログラムの間違い 1 2022/10/06 14:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
path文字列の操作
-
includeでHTMLファイルを呼出し...
-
phpのみで記述されたhtmlペ...
-
phpをオフラインで動かしたい
-
phpでお問い合わせフォームを作...
-
if文が入れ子の場合の条件の解釈
-
PHPがどうしても反映されません
-
Content-Typeが機能していない?
-
PHP関数mb_send_mailで送信する...
-
ApacheとPHPの連携
-
header関数について
-
初めまして、
-
ファイルシステム関数関係
-
下記のコードなのですが「C:\\H...
-
ブラウザのページキャッシュ機...
-
プログラミング作業効率を上げ...
-
マルチバイト関数
-
Xoops Cubeの設置がうまくゆき...
-
PHPでCSVファイルのデータを表...
-
サンプルソースのコロンの意味
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
includeでHTMLファイルを呼出し...
-
拡張子htmlでphpが動作するフォ...
-
centos6のlogにscript not foun...
-
PHPのアニュアル17章をみて
-
HPをhtmlからphpにする...
-
phpの階層が変わると上手く読み...
-
PHPで下記のサイトのスクリプト...
-
モバイルサイトのxhtmlでPHPを...
-
php セレクトボックス 分岐 ...
-
inet コントロールを用いてHTML...
-
文字化けで混乱中です...
-
携帯でhtmlが見えない
-
HTMLページにPHPで処理した結果...
-
index.phpにbbs.phpを埋め込みたい
-
超あほな質問で本当にすみません。
-
リライトのはずがリダイレクト...
-
おすすめデフラグツール
-
includeにより他の部分が表示さ...
-
正規表現を使い、URLで条件分岐...
-
連想配列を含むヒアドキュメン...
おすすめ情報