1

既存のWebサイトを取得して、別の既存のWebサイトのサブディレクトリとして配置する必要があります。たとえば、www.website1.comとwww.website2.comがあり、website2をwebsite1に次のように配置する必要があります:www.website1.com/website2/。これらのWebサイトをホストするためにIISを使用していることに注意してください。

私は実際にこれに何度も遭遇しましたが、リンクを書くのに良い方法があるのではないかと思っていました。そうすれば、ウェブサイトをどこにでも簡単にドロップでき、すべてのリンクを再フォーマットする必要がなくなります。私は2つのメインパスを使用しています。1つはルート用で、もう1つはルート外のincludesフォルダー用です。私の最初の考えは、これらのパス用にPHPに2つのパス変数を含めることでしたが、その後、外部のjsファイルとcssファイルに入れることができませんでした。キャッシングが複雑になるため、支援できるのであれば、それらをphpファイルに変換したくありません。

とにかく、他の誰かがこれに対する良い解決策を持っていますか?過去にどのように対処しましたか?

4

1 に答える 1

0

これが私がやったことです:

ルート ディレクトリの下の項目には、純粋な相対パスを使用しました。たとえば、画像フォルダー内の画像にアクセスする場合、リンクは、現在のページがディレクトリ構造内でどれだけ深いかによって異なります。

<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 サイトのルートと同じフォルダーに配置できます (または単にそのフォルダーを変更します)。別の場所に保存したい場合は変数)、リンクを変更せずにすべて機能します。

誰かがこれを行う別の方法、または私の方法の改善点を持っている場合は、ぜひ聞いてください.

于 2012-12-18T19:47:02.047 に答える