Ich verwende IIS 7.5 unter Windows 7 RC. Ich benutze das IIS Url Rewrite Modul, um URLs neu zu schreiben.IIS 7.5 mit URL Rewrite-Modul verdoppelt QueryString Params auf Postback
Alles scheint gut zu funktionieren, bis ich ein Postback durch Klicken auf eine Schaltfläche ausführen. Es hängt dann die Abfragezeichenfolgeflag params meiner neu geschrieben URL, wie folgt aus:
Rewritten URL, wie sie im Browser angezeigt wird: http://localhost/en/product/1239/Gary+Fisher+Hkek+Mountain+Bike
Ohne URL die URL-Rewriting ist:
http://localhost/product.aspx?lang=en&id=1239&title=Gary+Fisher+Hkek+Mountain+Bike
Wenn ich auf eine Schaltfläche klicke, um ein Postback durchzuführen, ändert sich die URL wie folgt:
Und wenn die URL neu geschrieben wird, werden alle Abfragezeichen params verdoppelt werden - so, wenn ich diese die aktuelle Sprache erhalten möchten, indem Sie:
Request.QueryString["lang"]
Der Wert I zurück ist „en, en“.
Hat jemand diese Probleme?
UPDATE: Regeln für das Umschreiben von Web.Config
<rule name="RedirectProductPageUrls" stopProcessing="true">
<match url="^product\.aspx$" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_METHOD}" negate="true" pattern="^POST$" />
<add input="{QUERY_STRING}" pattern="^lang=([^=&]+)&id=([^=&]+)&title=([^=&]+)$" />
</conditions>
<action type="Redirect" url="{C:1}/products/{C:2}/{C:3}" appendQueryString="false" redirectType="Permanent" />
</rule>
<rule name="RewriteProductPageUrls" stopProcessing="true">
<match url="^([^/]+)/product/([^/]+)/([^/]+)/?$" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="product.aspx?lang={R:1}&id={R:2}&title={R:3}" />
</rule>
Können Sie Ihre Rewrite-Regel posten? Schreiben Sie einfach, was in der Web.config ist: ... –
Mit einer Rewrite-Regel und einer Weiterleitungsregel für die Produktseiten aktualisiert. – MartinHN