ファイルリンクをheader.php
含むファイルがあります。.css
header.php
別のフォルダー内の別の php ファイルに「含める」と、その.css
ための hrefheader.php
が新しい php ファイルに対して正しくありません。
php ファイルが含まれるフォルダーに適した をファイルに含めるにはhref
、ファイル内でを宣言する方法を教えてください。.css
header.php
これが、多くの大規模なアプリケーションがインストール時に「ルート URI」定数/変数を設定しようとする理由です。
アプリケーションがドメイン/サブドメインのルート ディレクトリにある場合は機能し/css/style.css
ますが、そうでない場合は失敗します ( /appName/css/style.css
)
絶対 URI を他の構成定数/変数と共に「ルート」スクリプト フォルダーに保存すると、絶対リンクの作成が簡単になります。
define( 'SCRIPT_ROOT', 'http://localhost/yourApplication' );
// ...
echo '<link rel="stylesheet" type="text/css" href="'.SCRIPT_ROOT.'/css/style.css">';
href リンクの動的な相対パス生成が必要な理由の 1 つはわかります。それは、異なるパスを持つ複数のドメインまたはサイトでプロジェクトを実行する場合です。(たとえば、プロジェクトはhttp://myproject.example.org/とhttp://example.org/myprojecttest/で利用できます)。そうでない場合は、ルート フォルダーを基準にして css インクルードを直接指定することをお勧めします。
<link href="/css/style.css" />
これに当てはまる場合は、次のことを試してください。
header.php を必要とするすべての最上位ドキュメントで、ルートと比較した最上位ドキュメントの場所を示す $ROOT 変数を追加します。例えば:
$ROOT = './';
また
$ROOT = '../';
また
$ROOT = '../../';
これで、header.php ファイルで以下を使用できます。
<link href="<?php echo $ROOT; ?>css/style.css" />
これにより、任意の相対パスの任意のページで機能する header.php ファイルを作成できます。
完全な例
含まれるファイル (/path/header.php)
<html><body>
<head>
<link href="<?php echo $ROOT; ?>css/style.css" />
[...]
ファイル 1 (/path/index.php):
<?php
$ROOT = './';
include 'header.php';
?>
ファイル 1 (/path/admin/index.php):
<?php
$ROOT = '../';
include '../header.php';
?>
ファイル 3 (/path/admin/test/magic.php):
<?php
$ROOT = '../../';
include '../../header.php';
?>
ここに集めようとしたいくつかのオプションがあります
ベースhref
<head>
<base href="http://www.mysite.com/" />
</head>
それが行うことは、特定のパスを指すようにすべての href を設定することです。このセットを使用する<link rel='stylesheet' href='css/mycss.css' />
と、ページが奥深くにある場合でも、mycss.css ファイルを使用して正常に読み込むことができます。http://www.mysite.com/pages/2012/public/secret_folder/myownphpfile.php
絶対パス
などの絶対パスをいつでも使用できますが、後でファイルのフォルダーを変更するのは面倒です。
<link rel='stylesheet' href='http://www.mysite.com/css/mycss.css' />
定義されたパット
@Discomattが言ったように、PHPで定義されたパスを使用することは、物事を機能させ続けるための簡単な方法です。欠点; PHPを使用する必要があります。そのまま使えば問題ありません(^^)
define('CSSDIR', 'http://www.mysite.com/css/);
<link rel='stylesheet' href='<?= CSSDIR ?>mycss.css' />
css ファイルの絶対パスを次のように記述します。
<link href="http://site.com/css/style.css" />
トムの答えに基づいて、私はbase url
と PHPを組み合わせましたdefine
(タイピングを減らすため)。
PHPのどこか:
define("HOST_BASE", "http://example.com/");
次に、ヘッダー ファイルで次のようにします。
<base href="<?php echo HOST_BASE ?>">
ベースタグは初めてで互換性が心配でしたが、問題なく動作しているようです。詳細については、 MDN を参照してください。
このような:
<link rel="stylesheet" href="/css/style.css" />
最初/
は「ルートディレクトリに行き、そこから見てください」と言います。相対パスです。