2012-02-15 23 views
5

Sitem için CSS dosyalarını ayrı bir etki alanından sunmaya çalışıyorum.Apache .htaccess: .css dosyalarını ayrı bir alandan mı kullanıyorsunuz?

Ben ettik var (belge kök) sitemin .htaccess aşağıdaki giriş:

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

basitçe eşleşen niyeti ile:

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

... ve bir HTTP 301 gönderme

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

Ama aslında denilen vurmayacak olan: yönlendirme

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

(I *.js için yukarıda çoğaltmak ve js.mysite.com ve tüm png & jpgs dan onlara hizmet ve img.mysite.com onları hizmet etmek istiyorum.)

Herhangi anlayışlar olacaktır fantastik. İtiraf etmeliyim ki, htaccess yeniden yazma kuralları her zaman beni kızdırıyor gibi görünüyor.

+1

ile başlayan herşeyi yönlendirme, bir yolu yok sadece * talebiniz * diğerinden doğrudan css URL, doğru mu? Yani, yönlendirme yapmak yerine doğrudan istekte bulunmak için sayfaları değiştirin. – Andrew

+0

Siteyi olabildiğince taşınabilir tutmaya çalışıyorum. 301 yönlendirme ile bir isabet alacağımı anlıyorum, ama .htaccess dosyasında bir şeyleri saklayarak, siteyi yeni bir alana veya felaket kurtarma amacıyla sunuculara taşımam gerekiyorsa. dosya, yerel olarak servis edilmeye geri döner. En azından benim düşüncem buydu. :-) Bu şekilde CSS dosyalarını dahili olarak düzenlemeden CSS'yi geçersiz kılabilirim. Sitenin yayına girdiğinde sıkı kilitlenecek. – gellenburg

cevap

7

bu deneyin ve bana bildirin:

RewriteEngine On 
RewriteBase/

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

veya daha "dinamik yol"

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] 

Bu seferki dosya uzantısına göre alt alan JS ve CSS denetlemek ve kullanacaktır: js.mysite.com'a gidecek ve .css css.mysite.com'a ve resimler için aynı olacak, ancak bunlar yerine imgs.mysite.com'a gidecektir.

hatta daha genel olun:

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

Sen Sadece emin olmak için templates

+0

İlginç. Sanırım jpg.mysite.com, css.mysite.com, js.mysite.com, png.mysite.com ve gif.mysite.com'u oluşturabilirim. Http bağlantılarını paralel hale getirme hakkında konuşun! :-) Bunun çok fazla sorun olacağını düşünüyorum. Yine de ilk örneğini denedim ve "şablonlar" altındaki her şeyin alt etki alanına (yalnızca css uzantısına değil) yönlendirildiği görülüyor. :/ – gellenburg

+0

Katılıyorum, şöyle bir "media" yaratabilirsiniz: media.mysite.com ve her şeyi oraya yeniden yönlendir - Yanıtı güncelledim –

+0

@gellenburg, *** her şey yönlendiriyor *** çok garip *** css.mysite.com' BOZ'un örnek 1'ini doğru yazdıysanız. Bu kural sadece "GET/templates/*. Css" için tetiklenir. RegexpChecker.php dosyasını kullanın ve bu konuyla ilgili 301 tuzağa dikkat edin: [.htaccess yeniden yazma kuralları için hata ayıklama ipuçları] (http://stackoverflow.com/questions/9153262/tips-for-debugging-htaccess-rewrite-rules) – TerryE

İlgili konular