Utilizzo IIS 7.5 su Windows 7 RC. Io uso il modulo di riscrittura Url IIS per riscrivere gli URL.IIS 7.5 con modulo di riscrittura URL Doppio QueryString Params sul postback
Tutto sembra funzionare correttamente, finché non faccio un postback facendo clic su un pulsante. E poi aggiunge i params queryString mio URL riscritto, come questo:
Riscritto URL, come appare nel browser: http://localhost/en/product/1239/Gary+Fisher+Hkek+Mountain+Bike
Senza riscrittura degli URL l'URL è:
http://localhost/product.aspx?lang=en&id=1239&title=Gary+Fisher+Hkek+Mountain+Bike
Quando faccio clic su un pulsante per eseguire un postback, l'URL diventa:
E quando l'URL viene riscritto, tutti i params queryString sono raddoppiate - così quando voglio ottenere la lingua corrente in questo modo:
Request.QueryString["lang"]
Il valore al mio ritorno è "en, en".
Qualcun altro ha questi problemi?
UPDATE: riscrivere le regole da 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>
Puoi pubblicare la regola di riscrittura? È sufficiente pubblicare qualsiasi cosa nel web.config: ... –
Aggiornato con una regola di riscrittura e una regola di reindirizzamento per le pagine del prodotto. – MartinHN