URL이 포함 된 IIS 7.5 POSTBACK에서 QueryString 매개 변수를 두 배로 늘립니다.

StackOverflow https://stackoverflow.com/questions/1108473

  •  12-09-2019
  •  | 
  •  

문제

Windows 7 RC에서 IIS 7.5를 사용하고 있습니다. IIS URL Rewrite 모듈을 사용하여 URL을 다시 작성합니다.

버튼을 클릭하여 포스트 백을 수행 할 때까지 모든 것이 잘 작동하는 것 같습니다. 그런 다음 QueryString 매개 변수를 다시 작성한 URL에 추가합니다.

브라우저에 표시된대로 URL을 다시 작성합니다.http : // localhost/en/product/1239/Gary+Fisher+Hkek+Mountain+자전거

URL을 다시 작성하지 않으면 URL은 다음과 같습니다.

http : //localhost/product.aspx? lang = en & id = 1239 & title = Gary+Fisher+Hkek+Mountain+Bike

버튼을 클릭하여 포스트 백을 수행하면 URL이 다음과 같습니다.

http : // localhost/en/product/1239/gary+fisher+hkek+mountain+bike? lang = en & id = 1239 & title = Gary+Fisher+Hkek+Mountain+Bike

URL이 다시 작성되면 모든 쿼리 스트링 매개 변수가 두 배가됩니다. 따라서 현재 언어를 얻으려면 다음을 수행합니다.

Request.QueryString["lang"]

내가 돌아 오는 가치는 "en, en"입니다.

다른 사람이 그 문제가 있습니까?

업데이트 : 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=([^=&amp;]+)&amp;id=([^=&amp;]+)&amp;title=([^=&amp;]+)$" />
    </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}&amp;id={R:2}&amp;title={R:3}" />
</rule>
도움이 되었습니까?

해결책

다시 쓰기 규칙의 조치 요소에 appendquerystring = "false"속성을 추가하십시오.

도움이 되었기를 바랍니다.

다른 팁

추가하여 문제를 해결할 수있었습니다

Form.Action = Request.RawUrl;

page_load 이벤트에. 나는 AppendQueryString = "True"를 남길 수 있었고 지금까지는 제대로 작동하고 있습니다.

이것은 IIS 재 작성 모듈의 보안 기능입니다.

나는 개인적으로 ISAPI를 재 작성하는 것이 훨씬 더 좋고 규칙을 작성하는 것이 더 간단하며 더 많은 기능이 있습니다.

또한 IIS를 다시 작성하는 모듈을 다시 작성하고 새로운 프로세스 및 새로운 프로세스를 재 작성하는 중간에서 높은 부하 (웹 사이트에 대한 100 개 이상의 연결)에서 발견되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top