Domanda

Ho diviso alcune pagine tra i sottodomini e voglio riscrivere un URL su diverse pagine su diversi sottodomi in alcuni casi. Tutto è una regola di riscrittura ad eccezione delle due regole finali nel file. Queste ultime due regole determinano a quale sottodominio instrada il percorso che ho fissato.

Il modo in cui lo sto facendo è se preparo il percorso con un sottolineaggio (_), allora rimane in sottodominio A. Se preparo il percorso con un tilde (~), allora viene reindirizzato al sottodominio B.

Quindi ho questa regola:

<rule name="Login rule" stopProcessing="false">
        <match url="(.*?)/?old-path/Login\.aspx$" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
            <add input="{HTTP_METHOD}" pattern="GET" />
        </conditions>
        <action type="Rewrite" url="~new-path/login.aspx" />
    </rule>

Si prega di notare che c'è un ASPX alla fine dell'URL. Continua a elaborare, ma ho una regola di riscrittura generica alla fine dell'elenco proprio prima di quelli di reindirizzamento. Questo per rimuovere tutte le estensioni ASPX sul sottodominio A (www), ma voglio lasciare l'estensione ASPX per il sottodominio B (per favore non suggerire di rimuovere il suggerito nel secondo sottodominio. Grazie :)

<rule name="Remove ASPX" stopProcessing="false">
        <match url="^([^www\.]+)\.aspx$" />
        <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        </conditions>
        <action type="Rewrite" url="_{R:1}" />
    </rule>

Il problema è che questo non funzionerà perché tutti gli URL hanno www all'inizio. Non sono così bravo con Regex, ma immagino di dover semplicemente applicare questa regola a tutti gli URL che contiene un tilde. Ho provato questo, ma non funziona neanche:

<match url="^_+\.aspx$" />

Fondamentalmente voglio che questa regola ignori gli URL che ho riscritto per avere un ~ in loro, ma rimuovi l'ASPX se ho posizionato il _ All'inizio del percorso.

Eventuali suggerimenti?

È stato utile?

Soluzione

Se ho capito il tuo problema, allora hai l'URL: "~ new-path/login.aspx" e vuoi fare reindirizzare a "~ new-path/login", giusto?
Allora il tuo regex dovrebbe essere così:

^(.*~.*)\.aspx$

Nota: "WWW" fa parte del nome di dominio e non incluso nella corrispondenza.
Quindi, se il tuo URL completo è "http://www.mysite.com/~new-path/login.aspx", solo "~ new-path/login.aspx" prenderà parte alla corrispondenza regex.

E il modello {r: 1} conterrà valore nel primo gruppo (parentesi graffe): "~ new-path/login"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top