2014-03-04 6 views
8

Ich möchte einfach eine IIS 7.5 Rewrite-Regel um http://www.domain.com/url1 zu http://www.domain.com/url2 (gleiche Domäne) umleiten. Dies kann erreicht werden durch:IIS Rewrite-Regel zum Umleiten bestimmter Domänen-URL auf andere URL in derselben Domäne

<rule name="Redirect url" enabled="true" stopProcessing="true"> 
    <match url="^url1" /> 
    <action type="Redirect" url="http://www.domain.com/url2" 
     appendQueryString="false" redirectType="Permanent" /> 
</rule> 

jedoch hört diese Website auf mehrere Domains, damit über eine globale Regel für alle Domänen wird. Wie mache ich das spezifisch für domain.com? Ich habe versucht, die URL für die Übereinstimmung zu ändern und Bedingungen hinzuzufügen, kann sie aber nicht ausführen. Vielen Dank.

Antwort

10

Ich habe es auf diese Weise zu arbeiten:

<rule name="Redirect url1" stopProcessing="true"> 
    <match url="^url1$" /> 
    <conditions> 
      <add input="{HTTP_HOST}" pattern="^(www.)?domain.com$" /> 
    </conditions> 
    <action type="Redirect" url="http://www.domain.com/url2" 
     appendQueryString="false" redirectType="Permanent" /> 
</rule> 
+0

Warum verwenden Sie^url1 $ in Ihrem Match-Knoten? Oder soll das durch das ersetzt werden, was das OP als http://www.example.com/url1 angegeben hat? Wäre das sinnvoll - wäre es nicht besser, alle URLs zu finden, d. H. ". *"? PS. Der Rest von dem, was du gesagt hast, hat für mich funktioniert. – Jacques

+0

Ich wollte domain.com/subdir1 zu domain.com/subdir2 umleiten, aber die Website hörte mehrere Domänen. Ich wollte nicht, dass diese Regel die anderen Domains umleitet. url1 würde durch das Startsegment (Unterverzeichnis) ersetzt, das Sie umleiten wollten. Die Bedingung war für eine bestimmte Domäne. Und die Aktion hatte die gleiche Domain und das neue Segment. –

+0

Macht Sinn, danke – Jacques

2

Mit der Antwort auf dieser Seite konnte ich eine Regel für mich zwicken. Ich habe auch Abfrageparameter hinzugefügt. Wollte es hier posten, falls es jemand hilft:

<!-- probably requires custom rewrite module, available through web platform installer --> 
<rule name="Redirect oldsite.com" stopProcessing="true"> 
    <match url=".*" /> 
    <conditions> 
     <add input="{HTTP_HOST}" pattern="^.*oldsite\.com$" /> 
    </conditions> 
    <action type="Redirect" url="http://www.newsite.com/page.cfm?userid=123&amp;mode=form" 
     appendQueryString="false" redirectType="Permanent" /> 
</rule> 

Einige Bits Erklärung:

Um eine gewisse Verwirrung, diese „url“ ist der Teil nach den ersten Schrägstrich nach der Domäne aufklären und nicht die ganze URL. Ich werde das so einstellen, dass es irgendeine URL bekommt.

<match url=".*" /> 

Jetzt werden wir eine Bedingung hinzugefügt werden, da ich auf diesem Computer mehr als eine Website hatte, so dass ich möchte sicherstellen, dass diese Regel nur einer von ihnen angewendet wird. Ich habe auch die Wildcard anstelle von "(www.)?" weil der Platzhalter jede Subdomain abfangen wird.

<conditions> 
    <add input="{HTTP_HOST}" pattern="^.*oldsite\.com$" /> 
</conditions> 

Und die letzte Note ist für Leute, die in mehreren Query-String-params setzen wollen Sie verlassen nun die Ampersand zwischen ihnen entkommen müssen, weil es nicht funktioniert, wenn Sie dies nicht tun.

<action type="Redirect" url="http://www.newsite.com/page.cfm?userid=123&amp;mode=form" 
    appendQueryString="false" redirectType="Permanent" /> 
Verwandte Themen