2012-02-15 17 views
5

サイトのCSSファイルを別のドメインから配信しようとしています。Apache .htaccess:別のドメインから.cssファイルを処理しますか?

Iきました(ドキュメントルートで)私のサイトの.htaccessに次のエントリ:

RewriteRule ^templates/*\.css$ http://css.mysite.com/templates/$1 [R=301,L] 

単に一致することを意図して:

http://www.mysite.com/templates/default/styles/main.css 

...とHTTP 301を送信しますリダイレクト先:

http://css.mysite.com/templates/default/styles/main.css 

しかし、どのような実際に呼び出さなってきていることは:

http://css.mysite.com/templates/.css 

(私は*.jsについては、上記を複製し、js.mysite.comとすべてのpng &のJPGからそれらを提供し、img.mysite.comからそれらを提供したいと思います。)

任意の洞察力は次のようになり素晴らしい。私は認めなければならない、htaccess書き換えルールはいつも私を逃れているようだ。

+1

で始まるすべてのものをリダイレクト、あなただけ他からの直接の要求* CSS *への道を持っていませんURL、そうですか?つまり、リダイレクトの代わりにリクエストを直接行うようにページを変更しますか? – Andrew

+0

私は可能な限りポータブルサイトを維持しようとしています。私は301リダイレクトでヒットすることになるだろうが、.htaccessファイルの内容を保持することによって、サイトを.htaccessから単に削除するだけで災害復旧の目的で新しいドメインまたはサーバーに移動する必要がある場合ファイルはすべてをローカルに配信されるように戻します。少なくとも、それは私の考えである。 :-)このようにして、CSSファイルを内部的に編集することなくCSSを上書きすることができます。サイトはライブになるときつく締まってしまうだろう。興味深い。 – gellenburg

答えて

7

ことは、これを試してみて、私に知らせてください:

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} !^css\. 
RewriteRule ^templates/(.*)\.css$ http://css.mysite.com/templates/$1.css [R=301,L] 

以上の「動的な方法」

RewriteCond %{HTTP_HOST} ^(www\.)?mysite 
RewriteRule ^templates/(.*)\.(js|css)$ http://$2.mysite.com/templates/$1.$2 [R=301,L] 
RewriteRule ^templates/(.*)\.(jpg|gif|swf|jpeg|png)$ http://imgs.mysite.com/templates/$1.$2 [R=301,L] 

この1つは、JSとCSSをチェックし、ファイルの拡張子に基づいてサブドメインを使用します。だから.jsはjs.mysite.comに行き、.cssはcss.mysite.comに行き、画像は同じですが、代わりにimgs.mysite.comに行きます。

、あるいはより一般的なこと:

RewriteCond %{HTTP_HOST} ^(www\.)?mysite 
RewriteRule ^templates/(.*)$ http://media.mysite.com/templates/$1 [R=301,L] 

あなたは念のためにtemplates

+0

私はjpg.mysite.com、css.mysite.com、js.mysite.com、png.mysite.com、およびgif.mysite.comを作成できると思います。 http接続の並列化についてお話しください! :-)私はそれがあまりにも多くのトラブルになると思う。私はあなたの最初の例を試してみました、そして、それは "テンプレート"の下のすべてがサブドメインにリダイレクトされているように思えます。 :/ – gellenburg

+0

私は同意すると、media.mysite.comのような "media"を作成し、そこにあるすべてのものをリダイレクトすることができます - 私は自分の答えを –

+0

@gellenburgに更新しました。 BOZの例1を正しく入力していれば、「css.mysite.com」と表示されます。このルールは、 'GET/templates/*。css'に対してのみ起動します。 regexpChecker.phpを使用して、このスレッドの301のトラップに注意してください:[ヒント.htaccess書き換えルールのヒント](http://stackoverflow.com/questions/9153262/tips-for-debugging-htaccess-rewrite-rules) – TerryE