0

ディレクトリ 'web' の下に、ホワイト ラベルの Web サイト (html ファイル、画像、js など) を表すファイルを含むディレクトリ構造があります。また、「web-1」、「web-2」などと呼ぶ 20 の異なる「ブランド」があります。それぞれに、特定のブランドの「web」内のファイルを上書きする特定のファイルが含まれています。

Apache は、ドキュメント ルート 'website-i' で各仮想サイト i のファイルを検索するように構成されています。各「website-i」にブランド「web-i」のオーバーライドを含む「web」のようなコンテンツを含めるために、ビルド スクリプトは最初にすべての「web」を「website-i」にコピーしてから、ソースでオーバーライドします。 「web-i」からのファイル。

このアプローチにはいくつかの問題があります。

  1. ファイルのコピーには時間がかかります。
  2. 多くのディスク容量を必要とします
  3. 新しいブランドを追加するには、スクリプトに追加する必要があります。

ファイルの複製を必要としない方法でこれを行うためのベスト プラクティスはありますか? (Apache および Linux を使用)

4

1 に答える 1

0

最善の解決策は、非常に単純なサーバー側のコードを使用することですが、サーバーでコードを実行する権限がないためか、すでに拒否されていると想定します(ただし、構成をハッキングする場合は、おそらく行う)。

設定だけの解決策は、デフォルトのルートから提供するようにすることですが、ファイルが適切なディレクトリに存在する場合はURLを書き換えます...

RewriteCond  /web-1/a_file  -f
RewriteRule  ^(.*)$  /web/$1  

ただし、すべてのブランドのすべてのファイルに対してこれを行う必要があります。ファイルがホスト名と同じディレクトリに格納されている場合は、それについてもっと賢くできるかもしれませんが、それは私には複雑になりすぎています。

真剣に、サーバー側のコードはこれを続ける方法です...

不思議なことに、仕事仲間は数週間前とほぼ同じ状況にあり、最終的にはPHPとして書き直しました。各サイトはデータベース内の行であり、画像などの変更されたテキストやURLを引き出し、そこに何もない場合はデフォルトにフォールバックする1ページです。

そうは言っても。上記のように、リンクを使用すると、問題2、おそらく1の大部分が解決され、3を回避する方法はないと思います。

于 2012-02-22T23:36:20.773 に答える