これが私がやったことです:
ルート ディレクトリの下の項目には、純粋な相対パスを使用しました。たとえば、画像フォルダー内の画像にアクセスする場合、リンクは、現在のページがディレクトリ構造内でどれだけ深いかによって異なります。
<img src='./images/myImg.png'/> <!-- in root dir -->
<img src='../images/myImg.png'/> <!-- 2 levels deep -->
<img src='../../images/myImg.png'/> <!-- 3 levels deep -->
現在のファイルに関連するすべてのリンクがどこにあるかを考える必要があり、画像フォルダーまたはファイルの場所を変更すると、すべてのリンクを変更する必要があるため、これは理想的ではありません。ただし、ディレクトリ構造を変更し始めない限り、このフォルダーを任意のレベルに配置でき、変更なしで機能します。たとえば、次のことができます。
www.website2.com
www.website1.com/website2/
www.website1.com/sub-directory/website2/
また、リンクを変更することなく機能します。
ルート フォルダーの外側にあるインクルード フォルダー内のアイテムについては、少し異なる方法で行う必要がありました。それらについては、PHP で相対リンクを使用しました。これについては、 http: //yagudaev.com/posts/resolving-php-relative-path-problem/で詳しく学びました。彼はいくつかの異なるオプションについて説明していますが、最終的には次のようなグローバル変数を作成しました。
$includesPath = $_SERVER['DOCUMENT_ROOT'] . "/../myProductsIncludes/";
これにより、ルート フォルダーと同じフォルダー内の includes フォルダーが検索されます。インクルード フォルダーの場所を調整する必要がある場合は、この 1 つの変数のリンクを変更するだけです。次に、includes フォルダー内のファイルに URL を書き込むたびに、次のようにグローバル変数を先頭に追加します。
include $includesPath . "classes/myClass.php";
これはすべてかなり基本的なものであり、いくつかの欠点があるため、すべてのプロジェクトに使用するわけではありませんが、ディレクトリ構造のどこに配置されるかわからないプロジェクトがある場合はうまく機能します (たとえば、私がクライアントのために契約している場合)。したがって、たとえば、これをクライアントに渡す場合、彼は私のルート フォルダーの内容を彼の Web サイトの任意のサブディレクトリにドロップし、includes フォルダーを彼の Web サイトのルートと同じフォルダーに配置できます (または単にそのフォルダーを変更します)。別の場所に保存したい場合は変数)、リンクを変更せずにすべて機能します。
誰かがこれを行う別の方法、または私の方法の改善点を持っている場合は、ぜひ聞いてください.