0

サイトルートには、次のフォルダーとファイルがあります。

ここに画像の説明を入力

ファイル includes/scripts.php には、残りのページが機能するために必要なすべての css/js ファイルへのリンクが含まれています。サイト ルート (cart.php など) の任意のファイルから scripts.php を含めると、すべてのパスが正常に機能します。しかし、フォルダー (例: /admin) 内から含める場合、パスは正しくありません。明らかに、/admin 内に /js または /css dir がないためです。

scripts.php 内のパスを '../css/styles.css' から ./css/styles.css または単に /css/styles.css に変更するなど、いくつかのことを試しましたが、うまくいきませんでした。も試みinclude($_SERVER["DOCUMENT_ROOT"] . "includes/scripts.php");ましたが、成功しませんでした。

scripts.php 内で相対パスを作成して、どこからインクルードされても、すべての css/js パスが正しく、サイトのルートに関連するようにするにはどうすればよいですか?

これは、scripts.php 内のリンクされたファイルの例です。

<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.9.2.custom.min.js"></script>
<script type="text/javascript" src="js/jquery.alerts.js"></script> 
<script type="text/javascript" src="js/cookie.js"></script> 
<link rel="stylesheet" type="text/css" href="css/styles.css">
<link rel="stylesheet" type="text/css" href="css/layout.css">

等...

編集:ほとんどの回答は、ファイルが UNIX 環境でホストされていることを当然のことと見なしていることがわかりますが、これは真実ではありません。Windows/Apache セットアップで開発されており、終了すると UNIX サーバーでホストされます。したがって、両方のシステムで機能するソリューションが必要なので、ファイルを編集/ライブ サーバーにアップロードするたびにコードを変更する必要はありません。

4

4 に答える 4

6

PHPにインクルード

方法 1 - 定数を使用する

定数 (例: ROOTDIR) をルート ファイルの 1 つに作成します (例: index.php、または他のファイルをインクルードする前に常にインクルードするファイルを作成します)。

//Place this in a file you always include relatively
define("ROOTDIR", dirname(__FILE__) . "/");

そして、あなたが何かを含めるところならどこでも:

//Place this in whatever file
require_once(ROOTDIR . "admin/panels/users.php");

方法 2 - set_include_path を使用する

または、同じファイルで、定数の代わりに、次のように使用できますset_include_path

//Place this in a file you always include relatively
set_include_path(dirname(__FILE__) . "/");

そして、あなたがものを含めるとき:

//Place this in whatever file
require_once("admin/panels/users.php");

方法 3 - PHP 構成を使用する

定数を使用せずset_include_path、PHP 構成ファイルにアクセスしたい場合は、include_path構成を次のように変更することもできます。、ファイルを含めるときに/var/www/上記を使用するだけです。詳細については、こちらをご覧くださいrequire_once


しかし、スクリプトとスタイルシート、h2oooooo の組み込みについてはどうでしょうか?

ええと、私はあなたがそれに夢中になることを知っていました。私が通常行う傾向があるのは、パスをルートからの相対パスにすること/です。

<script type="text/javascript" src="/js/jquery-1.8.0.min.js"></script>
<!--                                ^                     -->

<base>または、HTML でパスを設定することもできます。

<head>
    <base href="http://www.mydomain.com/" />
    <script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
</head>

注:パスを設定するときは<base>、すべてのリンクがベース パスに対して相対的であることも指定されているため、管理フォルダにそのパスを指すリンクがある場合は にリンクされ、subdir/にはリンクさhttp://www.mydomain.com/subdir/ません http://www.mydomain.com/admin/subdir/

于 2013-04-17T09:03:55.437 に答える
1

include($_SERVER["DOCUMENT_ROOT"] . "includes/scripts.php"); の代わりに次の変更を行ってください。

<script type="text/javascript" src="<?php echo $_SERVER["DOCUMENT_ROOT"];?><js/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="<?php echo $_SERVER["DOCUMENT_ROOT"];?>js/jquery-ui-1.9.2.custom.min.js"></script>
<script type="text/javascript" src="<?php echo $_SERVER["DOCUMENT_ROOT"];?>js/jquery.alerts.js"></script> 
<script type="text/javascript" src="<?php echo $_SERVER["DOCUMENT_ROOT"];?>js/cookie.js"></script> 
<link rel="stylesheet" type="text/css" href="<?php echo $_SERVER["DOCUMENT_ROOT"];?>css/styles.css">
<link rel="stylesheet" type="text/css" href="<?php echo $_SERVER["DOCUMENT_ROOT"];?>css/layout.css">
于 2013-04-17T09:07:20.443 に答える