2015-04-17 9 views
7

Ich habe einen Pool von Anwendungen, die ich unter einem ARR-Server ausführen möchte, der als ein Router für alle meine Anwendungen dienen soll. Ich habe eine Reihe von Regeln definiert, die in Wasserfall angewendet werden sollten, aber etwas funktioniert nicht auf die richtige Weise.IIS ARR-Regeln funktionieren nicht wie erwartet beim Hinzufügen von Schrägstrichen zu meinen Anwendungen

Die erste Regel sollte die abschließenden Schrägstriche behandeln, die anderen Regeln sollten meine Anwendungen zuordnen, um für meinen internen DNS-Server mit Rewrite-URL aufzulösen, aber das Problem scheint während der ersten Regel zu passieren.

Das Standardverhalten ist, dass, wenn ich mit http://myapp meine Anwendung zu starten versuchen, wird 404 Code zurückgeben, wenn ich versuche, es zu laufen durch den Schrägstrich Hinzufügen (http://www.myapp/) alles funktioniert. Im Grunde sollte meine Regel nach URL-Mustern ohne Schrägstrich suchen: Wenn die Ressource ein Verzeichnis ist, sollte sie den Schrägstrich am Ende der URL hinzufügen.

Also das Muster die URL zu fangen ist der folgende reguläre Ausdruck:

.*[^/]$ 

Diese URL ohne/am Ende fangen soll und ich es erfolgreich getestet.

Für jede URL, die den regulären Ausdruck übereinstimmt, sollte ich prüfen, ob es ein Verzeichnis ist, und in dem Fall, sollte ich den Schrägstrich gesetzt, so:

{REQUEST_FILE} -> Is a directory 

Aber das funktioniert nicht. Ich habe auch versucht die folgende Regel ohne Erfolg hinzuzufügen:

{REQUEST_FILE} -> Is not a file 

die Regel anzuwenden ist folgende:

Redirect zu (Rewrite führt zu demselben Verhalten, auch):

{R:O}/ 

Es scheint nicht die/zu meinen URLs hinzufügen und ich weiß nicht, wie Sie überprüfen, welche Schritte fehlschlagen. Die nächsten Regeln folgen im Grunde dieses Muster:

mywebapp/* redirect to www.mydnsappaddress/{R:1} 

EDIT: Ich fügen Sie die web.config Probe Sie die Textversion der Regeln zu zeigen.

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <clear /> 
       <rule name="Trailing Slash" enabled="false" stopProcessing="true"> 
        <match url=".*[^/]$" /> 
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
         <add input="{REQUEST_FILENAME}" matchType="IsFile" /> 
        </conditions> 
        <action type="Redirect" url="{R:0}/" /> 
       </rule> 
       <rule name="app1" enabled="false" patternSyntax="Wildcard"> 
        <match url="sites/doc/*" /> 
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> 
        <action type="Rewrite" url="http://mypersonaldnsaddress/{R:0}" /> 
       </rule> 
       <rule name="ASTCO portale NWS" enabled="true" patternSyntax="Wildcard"> 
        <match url="portale/*" /> 
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> 
        <action type="Rewrite" url="http://mypersonaldnsaddress/{R:0/{R:0}" /> 
       </rule> 

      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 
+0

Können Sie die Regeln auflisten, die Sie verwenden, oder zumindest ein Beispiel? Sie sollten in Ihrer Datei web.config als XML erscheinen. –

+0

Ich habe sie im Hauptpost hinzugefügt. – lateralus

Antwort

0

Ich habe das Offensichtliche fragen: Hat Ihr Beispiel hat bewusst enabled Set false?

Ich konnte diese Arbeit genau so machen, wie Sie es wünschen: Wenn das Verzeichnis existiert, fügen Sie einen Schrägstrich am Ende hinzu, wenn nicht, tun Sie es nicht.

<rule name="Trailing Slash" enabled="true" stopProcessing="true"> 
    <match url=".*[^/]$" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" /> 
    </conditions> 
    <action type="Redirect" url="{R:0}/" /> 
</rule> 
+0

Ich werde es jetzt versuchen, danke. – lateralus

Verwandte Themen