IIS URL Rewrite negieren Bedingungen nicht arbeiten
Ich soll die Umleitung einige Seiten aus einem alten website (oldsite.com), um eine neue website (newsite.*) nach den folgenden Regeln:
- Alle first-level-Kinder (/sv, /Nein, /da, etc) sollte eine Weiterleitung an Ihre jeweiligen Gegenstücke, also newsite.se, newsite.Nein, newsite.dk, etc.
- Alle anderen Kinder/Nachkommen sollte-redirect auf die root der neuen Standorte als auch, außer /page1 und /page2 und seine Nachkommen.
Für diese habe ich folgende Regeln erstellt (für die sv in diesem Fall):
<rule name="Redirect /sv to .se" stopProcessing="true">
<match url="^sv/?$" />
<action type="Redirect" url="http://newsite.se" />
</rule>
<rule name="Redirect /sv/* except some pages" stopProcessing="true">
<match url="^sv/.+" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_URI}" pattern="^sv/page1(.*)" negate="true" />
<add input="{REQUEST_URI}" pattern="^sv/page2(.*)" negate="true" />
</conditions>
<action type="Redirect" url="http://newsite.se" />
</rule>
Die erste Regel funktioniert gut, aber nicht die zweite. Das problem ist, dass meine negiert Bedingungen scheinen nicht zu funktionieren. Wenn ich oldsite.com/sv/page1 ich bekomme immer noch umgeleitet zu newsite.se. Vielleicht habe ich missverstanden, wie negierte Bedingungen arbeiten, aber sollte nicht die zweite Regel, die Aktion auszuführen, wenn und nur wenn beide Bedingungen erfüllt sind (false), d.h. die REQUEST_URI nicht match /page1 und /page2?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie verstehen das Konzept sehr gut.
Das problem ist nur, dass die
{REQUEST_URI}
beginnen Sie immer mit einer/
, und die url nie Spiele mit einem Muster wie^sv/page1(.*)
, schließlich haben Sie eine Marke neuen false positive.So, müssen Sie zu zählen die führenden slashes in das Muster.