2011-12-08 3 views
5

Desidero canonicalizzare un nome di dominio, da bar.example.com a www.example.com (beh, tutto ciò che non è www.example.com). Il sito esegue IIS7.Riscritto Url IIS7 - Posso usare stopProcessing = "false" con una regola di reindirizzamento?

Il problema è che alcuni URL erano di forma http://bar.example.com/asp/oldpage.asp?query=awesome, e hanno regole specifiche di riscrittura degli URL già in atto che reindirizzano a http://www.example.com/newpage/awesome

Voglio scrivere una regola che cattura le altre regole.

Ecco la cattura: ho un sacco di regole, e si vuole mettere questa regola nella root del sito, ma hanno riscrittura aggiuntive/redirect norme in sottocartelle, quindi voglio rimandare il 301 da accadendo fino a quando tutte le regole sono state eseguite.

È possibile? Riscrivi hanno un'opzione da rinviare (stopProcessing = "false") ma questa non sembra essere un'opzione per Redirect.

Sono qui SOL?

risposta

6

Sfortunatamente, posso confermare che l'elaborazione posticipata (stopProcessing="false") funziona solo con azioni di riscrittura e viene ignorata da quelle di reindirizzamento.

Se il numero di partite è stato ridotto, ma non lo è, in base alla tua domanda, ti avrei suggerito di combinarle utilizzando un'alternativa di espressioni regolari. Per esempio:

First match: ^first/a$ 
Second match: ^second/b$ 

Combined match: ^(first/a|second/b)$ 

Leading a qualcosa di simile:

<rule name="MyCombinedRule"> 
    <match url="^(first/a|second/b)$" /> 
    <action type="Redirect" url="http://www.example.com/third/c" /> 
</rule> 
+0

Come nota aggiuntiva, sottocartelle * può * eliminare le regole dalla directory genitore, ma che significa che ho bisogno di copiare la regola ogni sottodirectory. – Broam