Tôi đang sử dụng IIS 7.5 trên Windows 7 RC. Tôi sử dụng mô-đun Rewrite Url IIS để viết lại URL.IIS 7.5 với Mô-đun Rewrite URL Tăng gấp đôi QueryString Params trên Postback
Mọi thứ có vẻ hoạt động tốt, cho đến khi tôi thực hiện đăng lại bằng cách nhấp vào nút. Sau đó nó sẽ thêm các params chuỗi truy vấn đến URL viết lại của tôi, như thế này:
URL viết lại, vì nó xuất hiện trong trình duyệt: http://localhost/en/product/1239/Gary+Fisher+Hkek+Mountain+Bike
Nếu không có URL viết lại URL là:
http://localhost/product.aspx?lang=en&id=1239&title=Gary+Fisher+Hkek+Mountain+Bike
Khi tôi nhấp vào nút để thực hiện đăng lại, URL sẽ thay đổi thành điều này:
Và khi URL được viết lại, tất cả các params chuỗi truy vấn sẽ được nhân đôi - vì vậy khi tôi muốn để có được những ngôn ngữ hiện tại bằng cách làm này:
Request.QueryString["lang"]
Giá trị tôi nhận được lại là "en, en".
Có ai khác có vấn đề đó không?
UPDATE: Viết lại quy tắc từ 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>
Bạn có thể đăng quy tắc viết lại của mình không? Chỉ cần đăng nội dung bất kỳ trong web.config: ... –
Được cập nhật với quy tắc ghi lại và quy tắc chuyển hướng cho các trang sản phẩm. – MartinHN