0

そうです、私の愚かさを許してください、私はt'interwebでたくさんの例を見てきましたが、探しているものが見つからなかったと思います.

私はウェブサイトを持っており、これphotography.example.comがメイン サイトですが、静的ファイルを提供する別のサブドメインも必要ですstatic.photography.example.com

ファイルをリクエストする場合 (例http://static.photography.example.com/js/jquery.js) 非静的ドメインからそのファイルを取得して、ファイル構造を完全に変更せずに、複数のドメインを使用してより多くの同時 HTTP リクエストを許可できるようにします。

ファイルが移動されたことをブラウザに知らせる http 応答をスローしたくありません。通常のドメインから静的ドメインにファイルをミラーリングしたいだけです。この後、キャッシングなどを改善するために、遠い将来の期限切れを設定することに進みます。

を使用してこれを達成するにはどうすればよい.htaccessですか?

編集1

だから、ちょっといじった後、私はこれを思いついた:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*)$ http://photography.example.com/$1 [L]

しかし、これは実際に読み込もうとしているドメインにリダイレクトされます。静的ドメイン名でファイルを提供したいので、このスクリプトの変更に関するヘルプをいただければ幸いです。

編集2

そのため、DNS を修正し、それが伝播するまで数日待ちましたが、CNAME 手法も機能しません。エントリは次のとおりです。

代替テキスト

4

3 に答える 3

2

あなたの質問では、次のことについて話している:

  1. キャッシュ用の Expire ヘッダーの追加
  2. ドメイン間でのリソースの分割

項目 1 については、メイン ドメインの httpd.conf/.htaccess ファイルを編集できます (Web サイト全体で編集しても問題ありませんよね?)

<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresByType application/x-javascript A2592000
  ExpiresByType image/gif A2592000
  ExpiresByType image/jpeg A2592000
  ExpiresByType image/png A2592000
</IfModule> 

項目 #2 には Apache 構成は必要ありません。static.photography.example.com DNS エントリをCNAME photography.example.comで構成するだけです。これでうまくいくはずです。

または、httpd.conf を編集して ServerAlias を追加することもできます

<VirtualHost xx.xxx.xxx.xx:80> 
DocumentRoot / 
ServerName photography.example.com 
ServerAlias static.photography.example.com 
</VirtualHost> 

したがって、現時点では、専用の Apache 構成を備えた別の仮想ホストは必要ありません。

別のドメインと、専用の構成を持つ別の仮想ホストが必要な理由は他にもいくつかあります。

これらのいずれかが必要な場合、またはキャッシュのニーズが複雑すぎる場合 (すべての JS/CSS/画像をキャッシュするのではなく、そのサブセットをキャッシュする必要がある場合)、唯一の解決策は次のとおりです: httpd を手に入れる.conf を作成し、ドメインごとに個別の構成を記述します

于 2010-09-24T09:37:18.393 に答える
1

質問に対する私の理解は、リダイレクトすることです

http://static.photography.example.com/js/jquery.js

次のアドレスからファイルを取得するには (ブラウザの URL を変更せずに):

http://photography.example.com/js/jquery.js

ただし、次のような既存のすべてのファイルへの URL をNOT REDIRECTEDに保持します。

http://static.photography.example.com/images.jpg

それが本当なら、これ.htaccessはうまくいくはずです:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)?.photography.example.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) http://photography.example.com/$1 [P]

さらに、次のような複雑なルールがある場合は、MAPPINGを使用することもできます。

RewriteRule ^/file1\.js$ http://photography.example.com/file.js?q=444 [P]
RewriteRule ^/file2\.js$ http://photography.example.com/file.js?q=345 [P]
RewriteRule ^/file3\.js$ http://photography.example.com/file.js?q=999 [P]

map.txtのフォルダにテキスト ドキュメント (例: ) を作成.htaccessし、次の内容を入れます。

file1   444
file2   345
file3   999

.htaccess外観は次のとおりです。

# Set a variable ("map") to access map.txt from config
RewriteMap map txt:map.txt

# Use tolower function to convert string to lowercase
RewriteMap lower int:tolower

# Get requested file name
RewriteCond %{REQUEST_URI} ^/([^/.]+)\.js$ [NC]

# Seek file name in map-file
RewriteCond ${map:${lower:%1}|NOT_FOUND} !NOT_FOUND

# Perform rewriting if the record was found in map-file
RewriteRule .? http://photography.example.com/file.js?q=${map:${lower:%1}} [P]
于 2015-04-04T17:49:15.937 に答える
0

static.photography.example.com のリクエストをサーバーに渡すには CNAME レコードが必要で、.htaccess が static.photography.example.com のリクエストを特別な方法で解析する必要があると思います。

次の書き換えルールを .htaccess に追加すると、うまくいくはずです

RewriteCond %{HTTP_HOST} !^(www\.)?photography.example.com$ [NC]

于 2010-10-01T12:47:51.823 に答える