2009-08-01 4 views
0

Beim Durchsuchen der Statistiken für meine Website erkannte ich, dass der Großteil des Traffics über Links von Drittanbietern zu klassischen ASP-Seiten kommt, die seit ein paar Jahren nicht existieren jetzt.Verwenden von Intelligcia UrlRewriter regex ASP-Seiten auf einer Holding-Seite

Ich entschied, dass eine Reihe von urlMappings auf die web.config Zugabe war keine gute Idee, so fügte ich Intelligencia UrlRewrite und versucht, eine Regel hinzuzufügen, wie folgt:

<rewriter> 
    <redirect url="^/(.*).asp$" to="~/pagenotfound.aspx?page=$1" /> 
    </rewriter> 

Die Regel funktioniert, aber es nimmt jede URL auf, die mit .asp = wie /pagenotfound.aspx?page=someurl.asp endet.

Hoppla :)

ich über reguläre Ausdrücke nicht genau kenntnisreich bin, wie kann ich es bekommen „.asp“ zu ignorieren, die das Fragezeichen folgt?

Antwort

2

Versuchen Sie folgendes:

<rewriter> 
    <redirect url="^/([^?]*)\.asp(\?.*)?$" to="~/pagenotfound.aspx?page=$1" /> 
    </rewriter> 

Das sollte es jede URL machen ignorieren, die in .asp endet aber ein enthält? bevor. Das [^?] Bedeutet "irgendein Zeichen, das nicht ein?" anstelle von *, was "irgendein Zeichen" bedeutet.

Bearbeiten: Extra-Muster hinzugefügt, um Abfragezeichenfolgen nach eine ASP-Erweiterung aber nicht vor ihnen zu ermöglichen.

+0

Dav, Danke für die Antwort. Während dies funktioniert, bedeutet es, dass es keine ASP-Seiten mehr mit einem Abfrage-String aufnimmt, der meinen Zweck besiegt - ich muss eine legitimierte ASP-URL und Redirect erkennen, während ich ASP, das gerade in einer Anfrage ist, nicht aufzeichne Zeichenfolge. Thanksl –

+0

Heya Richard - Sie sollten in der Lage sein, die URL-Regex zu erweitern, um das Potenzial für eine Abfragezeichenfolge nach der Erweiterung .asp hinzuzufügen - Ich habe mein Beispiel oben für etwas bearbeitet, das ich glaube * funktioniert (nicht 100%) sicher, wenn ich die Syntax darauf genagelt habe). – Amber

+0

Ich habe auch den umgekehrten Schrägstrich hinzugefügt, der vor dieser ersten Periode sein sollte (für .asp) - andernfalls wird es als reguläre Regex-Periode interpretiert, die mit einem beliebigen Zeichen (anstelle einer literalen Periode) übereinstimmt, was dazu führen würde unsachgemäß passend etwas wie /test.asp?asp – Amber

0
<rewrite url="^~/browse/([^/.]+)\.aspx?$" 
to="~/browse-prints.aspx?dispCat=$1"/> 

<rewrite url="^~/browse/([^/.]+)\.aspx(\?.*)?$" 
to="~/browse-prints.aspx$2&amp;dispCat=$1"/> 
Verwandte Themen