Frage

Ich verwende UrlRewritingNet in Umbraco einige grundlegende URL zu tun Produkt- und Kategorie URLs Umschreiben von. Alles ist in Ordnung auf meinem lokalen Rechner (Visual Studio Entwickler-Webserver) und auf unserem internen Entwicklungsserver (Windows Server 2008 mit EßT 7, 32 Bit). Aber es funktioniert nicht auf dem Produktionsserver, der ist Windows Server 2008 R2 mit IIS 7 (64 bit). Das Symptom ist, dass die Rewrite-Regel nicht ausgelöst wird. Der Server einfach gibt mir ein 404-Fehler.

Die Umschreiben Regel sieht wie folgt aus:

<add name="CategoryRewrite"
     virtualUrl="^/products/(.*)/(.*).aspx"
     rewriteUrlParameter="ExcludeFromClientQueryString"
     destinationUrl="~/default.aspx?umbPage=1&amp;maincategory=$1&amp;subcategory=$2"
     ignoreCase="true"/>

Die URL sieht wie folgt aus - dies nicht funktioniert:

http://example.net/products/category+name/sub+category.aspx

Wenn ich die URL der es funktioniert in allen drei Umgebungen folgt ändern:

http://example.net/products/category%20name/sub%20category.aspx

Es ist klar, dass der Regex in dem virtualUrl Attribute schlägt fehl, wenn die + für das Leerzeichen verwendet wird. Aber ich muss zugeben, dass ich herausfinden kann, warum die Regex nur auf dem Server R2 Windows 2008 schlägt fehl.

Ich suche Einsichten auf, welche Unterschiede zwischen dem Windows Server 2008 R2 und die anderen 2-Umgebungen. Was soll ich suchen?

Ich habe bestätigt, dass die System.Web.RegularExpressions.dll ist die gleiche Version auf den Servern.

War es hilfreich?

Lösung

Das Problem ist, dass die IIS7 Anfrage Filter lehnt URLs + Zeichen. Die Lösung besteht darin, den folgend Sie Web.config:

<configuration>
 <system.webServer>
  <security>
   <requestFiltering allowDoubleEscaping="true" />
  </security>
 </system.webServer>
</configuration> 

Für weitere Informationen: http: //blogs.iis.net/thomad/archive/2007/12/17/iis7-rejecting-urls-containing.aspx

Ein Kollege bekam die glänzende Idee, die Website auf seinem eigenen IIS ausgeführt werden. Und dann wurde der Fehler weiter als 404.11 definiert und von dort an einer Lösung war einfach.

Andere Tipps

Das scheint mir seltsam, weil Ihre Regex passt auch ‚+‘ Zeichen. Vielleicht ist das Problem wegen des ersten Zeichens in der Regex, den Zeichenfolge beginnen ‚^‘, dass Sie verwenden. Vielleicht auf dem Produktionsserver Sie eine absolute URL erhalten und auf Ihrer dev Server-Umgebung eine relative URL in das Umschreiben Modul übergeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top