1

すべての画像をサーバー上の 1 つのフォルダーに集中しています。単一の集中型エンジンを使用して各ドメインのそれぞれのコンテンツを取得する Web サイトがいくつかあります。画像のディレクトリ構造は次のとおりです。

images/
  website1.com/
    image1.jpg
    image2.jpg
    ...
  website2.com/
    image1.jpg
    image2.jpg
    ...
  website3.com/
    image1.jpg
    image2.jpg
    ...

ただし、HTML からこれらの画像リソースのいずれかを要求する場合、次の URL を使用したくありません。

http://website1.com/images/website1.com/image1.jpg

代わりに、私は単に欲しい:

http://website1.com/images/image1.jpg

ただし、これを翻訳する必要があるシナリオが 2 つあります。ライブサーバーと開発サーバー。実際のケースは簡単に思えます。 %{HTTP_HOST} をパスに書き直してください。開発サーバーの場合は少し異なります。テスト サイトを表示できるように、dev_domain という Cookie を使用します。例: $_COOKIE['dev_domain'] = website1.com.

ライブケースと開発サーバーケースの両方を作成するためのルールは何ですか?

これは私がこれまで開発ケースで持っていたものですが、うまくいきません:

RewriteBase /
RewriteCond %{HTTP_COOKIE} dev_domain=([^;]+) [NC]
RewriteCond %{THE_REQUEST} ^/images/(.*)$
RewriteRule ^/images/(.*)$ images/%1/$1 [NC,L]

これは私がライブケース用に持っているものですが、ライブにプッシュしていないため、動作するかどうかはまだわかりません (条件は開発サーバーを除外することです):

RewriteCond %{HTTP_HOST} !^dev.mainsite.com$
RewriteRule ^/images/(.*)$ /images/%{HTTP_HOST}/$1 [NC,L]

私が間違っていることについてのアイデアはありますか?

4

1 に答える 1

0

あなたはもうすぐそこにいるようです。ディレクティブにはRewriteRule先頭を付けないでください/

# Added [NC] to the host RewriteCond, removed [NC] from the RewriteRule
RewriteCond %{HTTP_HOST} !^dev.mainsite.com$ [NC]
RewriteRule ^images/(.*)$ /images/%{HTTP_HOST}/$1 [L]
#----------^^^---no leading /

同じ変更パターンを開発サイトのルールに適用します。

于 2012-11-18T19:33:23.357 に答える