Apache .htaccess:从单独的域提供.css文件?

gel*_*urg 5 apache .htaccess mod-rewrite

我正在尝试从单独的域为我的网站提供CSS文件.

我在我的网站的.htaccess中有以下条目(在文档根目录中):

RewriteRule ^templates/*\.css$ http://css.mysite.com/templates/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

旨在简单匹配:

http://www.mysite.com/templates/default/styles/main.css
Run Code Online (Sandbox Code Playgroud)

...并将HTTP 301重定向发送到:

http://css.mysite.com/templates/default/styles/main.css
Run Code Online (Sandbox Code Playgroud)

但实际上被称为的是:

http://css.mysite.com/templates/.css
Run Code Online (Sandbox Code Playgroud)

(我想复制上面的内容*.js并从js.mysite.com和所有png&jpgs提供服务,并从img.mysite.com提供服务.)

任何见解都会很棒.我必须承认,htaccess重写规则似乎总是躲避我.

Boo*_*eus 7

试试这个让我知道:

RewriteEngine On
RewriteBase /

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

或者更"动态的方式"

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]
Run Code Online (Sandbox Code Playgroud)

这个将检查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]
Run Code Online (Sandbox Code Playgroud)

您重定向所有开头的内容 templates