Pergunta

Estou usando o IIS 7.5 no Windows 7 RC. Eu uso o módulo IIS Url Rewrite para reescrever URLs.

Tudo parece funcionar bem, até que eu executar uma nova postagem, clicando em um botão. Em seguida, ele acrescenta os parâmetros querystring à minha URL reescrito, assim:

Rewritten URL, como aparece no navegador: http: // localhost / en / produto / 1239 / Gary Fisher + + Hkek + montanha + bicicleta

Sem URL reescrever o URL é:

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

Quando eu clicar em um botão para executar uma nova postagem, o URL muda para este:

http: // localhost / en / produto / 1239 / Gary + Fisher + Hkek + montanha + bicicleta lang = en & id = 1239 & title = Gary + Fisher + Hkek + montanha + bicicleta

E quando a URL é reescrita, todos os parâmetros querystring são dobrados - por isso, quando eu quero começar o idioma atual, fazendo isso:

Request.QueryString["lang"]

O valor eu voltar é "en, en".

É alguém ter esses problemas?

UPDATE: regras de reconfiguração 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=([^=&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>
Foi útil?

Solução

Adicione o appendQueryString = atributo "false" para o elemento da regra de reescrita bem acção.

Espero que isso ajude.

Outras dicas

Eu era capaz de resolver o problema adicionando

Form.Action = Request.RawUrl;

para o evento Page_Load. Eu era capaz de deixar appendQueryString = "true" e até agora ele está funcionando corretamente.

Esta é uma característica do Módulo Rewrite IIS de segurança.

Eu pessoalmente prefiro ISAPI Rewrite como é muito melhor, mais simples de escrever as regras, e tem mais recursos.

Tem também encontrado em moderada a alta carga (mais de 100 ligações a um site) que o módulo Rewrite IIS cursos do pool de aplicativos para falhar e desova e novo processo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top