構造は以下のとおりです。
ルートディレクトリ
│
├ 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ランキング
-
Checkboxでの注意事項認証
-
centos6のlogにscript not foun...
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
.phpと.incファイルの違いはな...
-
Subversionのリポジトリの削除
-
【file_exists】ファイルが存在...
-
pearのMailライブラリがうまく...
-
PHPで新しいウインドウで開く命...
-
PHPのif文でその処理を途中で抜...
-
phpファイルの編集について
-
URLが.PHPってどういう...
-
VBSの「MsgBox」について
-
.htaccessにphp_valueが使用できな
-
VB6にてメールを送信する方法
-
Smartのカスタマイズでエラー
-
php my adminより取り出したデ...
-
インクルードした部分が表示さ...
-
サーバ無しでphpを動作させる
-
stat failed
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
centos6のlogにscript not foun...
-
includeでHTMLファイルを呼出し...
-
1桁7セグメントLEDの部品高さ
-
includeにより他の部分が表示さ...
-
文字化けで混乱中です...
-
別階層のPHP関数を使うには?
-
wordpress等のように、htmlを各...
-
SSI される .inc ファイル内に ...
-
コードがそのまま表示される
-
これを作成するにはPHP?CGI...
-
phpの階層が変わると上手く読み...
-
正規表現を使い、URLで条件分岐...
-
九州各地の美味しいものをお取...
-
Fatal error: OpenPNE設置時の...
-
html拡張子のままphpを使いたい
-
「旭日中綬賞 」とはどんな賞で...
-
青森県産のカルヴァドス
-
php セレクトボックス 分岐 ...
-
ZendFrameWorkで、.htaccessを...
-
以下のコードでエラーが出てし...
おすすめ情報