2013-01-10 17 views
7

Aşağıdaki senaryo için bir yeniden yazma kuralı yazmaya çalışıyorum.Web.config dosyasında Subdomain alt klasörünü yeniden yaz

Kullanıcı bu resmi yüklemeye çalışır:

domain.com/images/folder/picture.jpg 

ve onun yerine, yüke ihtiyaç:

İşte
cdn.domain.com/images/folder/picture.jpg. 

Ben çalışmadığını var ne:

<rule name="CDN rewrite for Images"> 
    <match url="(.*)" /> 
    <conditions> 
     <add input="{HTTP_HOST}" pattern="domain.com" /> 
     <add input="{REQUEST_URI}" pattern="^/images/folder/(.*)$" /> 
    </conditions> 
    <action type="Rewrite" url="cdn.domain.com/images/folder/{C:1}" /> 
</rule> 

UPDATE: Ek bilgi ekleme. Çoğu resim Joomla'dan sunulurken, etki alanının kökeni domain.com gibi bir şeydir, çoğu görüntü bir src = "/ images/folder/picture.jpg" ile girilir. Bu yeniden yazmayı nasıl etkilediğinden emin değil, ancak aşağıda cheesemacfly cevabı üzerine seçeneklerin hiçbiri ...

Update2 çalışıyoruz: cheesemacfly benim özel durumlarda bana yardım edemeyecek iken, ona ödül kazandı ve kabul birisi olarak onun cevabı işaretlemiş çünkü o sohbet etmede bana yardımcı olmaya çalışmak için yukarıda ve öteye gitti. Umarım cevabı, IIS’de tekrar yazılanlara yardımcı olur.

+0

Desen '^/images/stories/catalog /(.*)$ ',' domain.com/images/folder/picture.jpg' adlı girdinizle eşleşmiyor. Bu bir yazım hatası mı? Burada yapmak istediğiniz şey, domain.com/images/folder/* 'gibi herhangi bir isteğin istenen dosya adını/yolunu tutmak için cdn.domain.com/images/folder/*' şeklinde yeniden yönlendirilmesidir, doğru muyum? – cheesemacfly

+0

Bir yazım hatası oldu. Yukarıda düzeltildi. Ve evet, yeniden yazma konusunda haklısınız. Orjinal çekimi cdn ile kullanıyorum – GregD

+0

Maalesef daha fazla yardımcı olamadım. Eğer bulursanız çözümü görmeyi çok isterim! – cheesemacfly

cevap

5

DÜZENLEME:

dışındaki web sitelerine URL'ler yeniden yazmak mümkün (ve sadece yönlendirmez) olmak için, Application Request Routing module yükleyip proxy modunu etkinleştirmeniz gerekir.

Bunu yapmak için:

  1. Download and install the module
  2. IIS yönetim konsolu açın (inetmgr)
  3. Sunucu düğümü seçin
  4. Application Request Routing Cache üzerinde
  5. çift tıklama: Server Proxy Settings üzerine ARR
  6. tıklayın üzerinde Actions bölmesi (ekranın sağında)
  7. kutusunu Enable proxy edin ve ikinci aşama kurallarınızı ayarlamadan hakkındadır Apply proxy

tıklayın.

<rewrite> 
    <rules> 
    <rule name="Rewrite to cdn domain"> 
     <match url="^images/folder/(.+)$" /> 
     <action type="Rewrite" url="http://cdn.domain.com/images/folder/{R:1}" /> 
    </rule> 
    </rules> 
</rewrite> 

Yoksa ikinci web sitesinde aynı klasör mimarisini tutmak eğer aşağıdaki gibi kolaylaştırabilirsiniz:

<rewrite> 
    <rules> 
    <rule name="Rewrite to cdn domain"> 
     <match url="^images/folder/(.+)$" /> 
     <action type="Rewrite" url="http://cdn.domain.com/{R:0}" /> 
    </rule> 
    </rules> 
</rewrite> 

Eğer yeniden yazma sonra aşağıdaki kodu kullanabilirsiniz yolu dayanmalıdır istiyorsanız belirli bir uzantısı ile biten dosyaları yakalamak istiyorsanız

(resimlerini diyelim):

<rewrite> 
    <rules> 
    <rule name="Forward to cdn domain"> 
     <match url="^images/folder/.+\.(?:jpg|bmp|gif)$" /> 
     <action type="Rewrite" url="http://cdn.domain.com/{R:0}" /> 
    </rule> 
    </rules> 
</rewrite> 

Lütfen bakınız: http://www.iis.net/learn/extensions/url-rewrite-module/iis-url-rewriting-and-aspnet-routing (bölüm "Hangi Seçenekleri Kullanmalısınız? ") İPUCU

. Kalıbınızı test etmek

iyi yolu, IIS test deseni aracı kullanmaktır web sitenizin kökünde

-> URL yeniden -> a oluştur boş kural -> Test deseni tıklayın: beklenen sonucu alamazsanız Pattern test

, sen Failed Request Tracing tool

kullanarak yeniden yazma debug 0
+0

Varyasyonlarınızın hiçbiri işe yaramadı. Onlardan herhangi birini kullandığımda, resimleri "kırıyor". Kaynak koduna baktığımda, bunun bir kısmı Joomla'dan geldiği için, bir resim örneğin bir src = "/ images/folder/picture.jpg" gibi. – GregD

+0

Beni biraz kaybettin ... IIS7 üzerinde barındırılan görüntüleri kullanarak bir Joomla web siteniz var mı? Bu Joomla web sitesi nerede barındırılıyor? – cheesemacfly

+0

Bu, IIS 7 – GregD

0

NOT: Kuralın yeniden yazma yerine yönlendirme olarak değiştirilmesi, sorunu giderir. İdeal olarak bir yönlendirme olmasını istersiniz, fakat yeniden yazmayı denemeye çalışırken saatlerce harcadım ve şimdiye kadar hiç çözüm yok.

<rule name="Rewrite to images.cdn.com" enabled="true" stopProcessing="true"> 
<match url="images/(.+)$" ignoreCase="true" /> 
<action type="Redirect" url="http://images.cdn.com/{R:1}" /> 
</rule>