Używam IIS 7.5 na Windows 7 RC. Używam modułu IIS Urr Rewrite do przepisywania adresów URL.IIS 7.5 z modułem URL Rewrite Podwaja parametry QueryString na poczcie zwrotnej
Wszystko wydaje się działać poprawnie, dopóki nie wykonuję odświeżenia, klikając przycisk. Następnie dołącza params ciągu kwerendy do mojego przepisany URL, na przykład:
przepisany URL, gdyż pojawia się w przeglądarce: http://localhost/en/product/1239/Gary+Fisher+Hkek+Mountain+Bike
Bez URL przepisywania URL to
http://localhost/product.aspx?lang=en&id=1239&title=Gary+Fisher+Hkek+Mountain+Bike
Po kliknięciu przycisku w celu odświeżenia strony URL zmienia się na:
A gdy adres URL jest przepisany wszystkie params kwerendy są podwojone - więc gdy chcę uzyskać aktualny język w ten sposób:
Request.QueryString["lang"]
Wartość wrócę to „en, en”.
Czy ktoś jeszcze ma te problemy?
UPDATE: Przepisz reguły z 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>
Czy możesz opublikować swoją zasadę przepisywania? Po prostu publikuj wszystko, co jest w sieci.config: ... –
Zaktualizowana regułą przepisywania i regułą przekierowania stron produktów. – MartinHN