2013-01-10 6 views
7

Ich versuche, eine Rewrite-Regel für das folgende Szenario zu schreiben.Unterordner zu Subdomain in web.config neu schreiben

Benutzer dieses Bild zu laden versucht:

domain.com/images/folder/picture.jpg 

und stattdessen muss ich es Last:

cdn.domain.com/images/folder/picture.jpg. 

Hier ist, was ich habe, das nicht funktioniert:

<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: Zusätzliche Informationen hinzufügen. Die meisten Bilder werden von Joomla bereitgestellt, während der Stamm der Domäne etwas wie domain.com ist, die meisten Bilder werden mit einem src = "/ images/folder/picture.jpg" eingegeben. Nicht ganz sicher, wie sich das auf die Neuschreibung auswirkt, aber keine der Optionen auf cheesemacfly Antwort unten, arbeitet ...

UPDATE2: Während cheesemacfly nicht in der Lage war, mir in meinen besonderen Umständen zu helfen, verlieh ich ihm die Prämie und markierte seine Antwort als Sicherheiten akzeptiert, weil er ging darüber hinaus und versuchte mir im Chat zu helfen. Hoffentlich hilft seine Antwort jemandem beim Umschreiben auf IIS.

+0

Das Muster '^/images/stories/catalog /(.*)$' stimmt nicht mit Ihrem Eintrag 'domain.com/images/folder/picture.jpg' überein. Ist das ein Tippfehler? Was Sie hier tun möchten, ist jede Anfrage wie 'domain.com/images/ordner/*' nach 'cdn.domain.com/images/ordner/*' umzulenken, wobei der gewünschte Dateiname/Pfad beibehalten wird, habe ich recht? – cheesemacfly

+0

Es war ein Tippfehler. Korrigiert oben. Und ja, du hast Recht mit dem Neuschreiben. Ich benutze Herkunft-Pull mit meiner cdn – GregD

+0

Sorry, ich konnte Ihnen nicht helfen mehr ... Ich würde gerne die Lösung sehen, wenn Sie es finden! – cheesemacfly

Antwort

5

EDIT:

Um in der Lage sein, neu zu schreiben (und nicht nur Redirect) Urls auf fremde Internetseiten, müssen Sie die Application Request Routing module installieren und den Proxy-Modus zu aktivieren.

Dazu:

  1. Download and install the module
  2. Ihre IIS-Verwaltungskonsole öffnen (inetmgr)
  3. Ihr Serverknoten auswählen
  4. Klicken Sie doppelt auf Application Request Routing Cache: ARR
  5. Klicken Sie auf Server Proxy Settings auf der Bereich Actions (rechts auf dem Bildschirm)
  6. Markieren Sie das Kästchen Enable proxy und klicken Sie auf Apply proxy

Der zweite Schritt zum Einrichten Ihrer Regeln.

Wenn Sie Ihre Rewrite auf dem Weg zu stützen dann den folgenden Code verwenden:

<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> 

Oder wenn Sie die gleiche Ordner Architektur auf der zweiten Website halten können Sie wie folgt vereinfachen:

<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> 

Wenn Sie nur die Dateien mit der Endung mit einer bestimmten Erweiterung fangen wollen (wir Bilder sagen):

<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> 

Bitte beachten Sie: http://www.iis.net/learn/extensions/url-rewrite-module/iis-url-rewriting-and-aspnet-routing (Abschnitt "Welche Option sollten Sie verwenden? „)

. TIPP:

Der beste Weg, um Ihre Muster zu testen, ist das IIS-Testmuster-Tool verwendet

An der Wurzel Ihrer Website -> URL Rewrite -> erstellen leere Regel -> klicken Sie auf Testmuster: Pattern test

Wenn Sie das erwartete Ergebnis nicht bekommen, können Sie Ihre Rewrite debuggen die Failed Request Tracing tool

mit 0
+0

Keine deiner Varianten hat funktioniert. Wenn ich eines von ihnen benutze, "bricht" es die Bilder. Wenn ich mir den Quellcode anschaue, weil ein Teil davon von Joomla kommt, hat ein Bild zum Beispiel src = "/ images/folder/picture.jpg". – GregD

+0

Sie haben mich ein bisschen verloren ... Sie haben eine Joomla-Website mit Bildern auf Ihrem IIS7 gehostet? Wo wird diese Joomla-Website gehostet? – cheesemacfly

+0

Es ist eine Joomla-Installation auf IIS 7 – GregD

0

HINWEIS: Wenn Sie die Regel so ändern, dass sie eine Weiterleitung statt einer Neuschreibung ist, wird das Problem behoben. Idealerweise möchten Sie, dass es eine Weiterleitung ist, aber ich habe viele Stunden damit verbracht, das Neuschreiben zum Laufen zu bringen, und bisher noch keine Lösungen.

<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> 
Verwandte Themen