J'utilise IIS 7.5 sur Windows 7 RC. J'utilise le module IIS Url Rewrite pour réécrire les URL.IIS 7.5 avec le module de réécriture d'URL Double QueryString Params sur Postback
Tout semble fonctionner correctement, jusqu'à ce que j'effectue une publication en cliquant sur un bouton. Il ajoute ensuite les querystring params à mon URL réécrite, comme ceci:
URL réécrite, tel qu'il apparaît dans le navigateur: http://localhost/en/product/1239/Gary+Fisher+Hkek+Mountain+Bike
Sans URL réécrire l'URL est:
http://localhost/product.aspx?lang=en&id=1239&title=Gary+Fisher+Hkek+Mountain+Bike
Lorsque je clique sur un bouton pour effectuer une publication, l'URL change en:
Et lorsque l'URL est réécrite, tous les params queryString sont doublés - quand je veux la langue actuelle en faisant ceci:
Request.QueryString["lang"]
La valeur mon retour est « en, en ».
Est-ce que quelqu'un d'autre a ces problèmes?
MISE À JOUR: Réécrire les règles de 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>
Pouvez-vous publier votre règle de réécriture? Il suffit de publier ce qui se trouve dans le fichier web.config: ... –
Mise à jour avec une règle de réécriture et une règle de redirection pour les pages de produit. – MartinHN