Oder das Gegenteil, wie kann ich eine URL nur dann umschreiben, wenn sie nicht existiert? zB abfangen 404s.Wie kann ich mit ISAPI-Rewrite eine URL nur dann umschreiben, wenn die umgeschriebene Ziel-URL existiert?
Hier ist der Kontext: Wir migrieren langsam unsere Website von ASP Classic nach ASP.NET. Mit "langsam" meine ich das Konvertieren von 9000+ ASP-Seiten pro Seite nach ASPX.
Während dies zu tun wir alle defekten Verbindungen sowie nicht zu verlieren alle Rankings in den Suchmaschinen verhindern wollen. Das bedeutet, dass alle unsere ASP-URLs weiterhin bestehen müssen, obwohl sie von ASPX-Seiten bereitgestellt werden.
Was ich gerne tun könnte, ist mit ISAPI-Rewrite-Regel (en), die .asp -> .aspx neu schreiben, es sei denn, die Ziel-URL existiert nicht wirklich in diesem Fall würde es einfach ausführen und zurückgeben. Asp.
Wenn wir also somepage.asp nicht konvertiert haben noch zu .aspx, würde die URL nicht erhalten neu geschrieben und somepage.asp würde angezeigt werden. Sobald sapage.asp verschwunden ist, wird die URL in somepage.aspx umgeschrieben, die ausgeführt und zurückgegeben wird, aber der Webbrowser/die Suchmaschine würde denken, dass sie somepage.asp erhalten hat.
An einem gewissen Punkt in der Zukunft würden wir die canonical url in den ASPX-Seiten gesetzt und die Suchmaschinen auf ihrer Bequemlichkeit aufholen lassen.
Hinweis: Ich habe mit der Verwendung eines benutzerdefinierten 404 auf IIS experimentiert, um das Dateisystem zu überprüfen und einen Server.Transfer auszuführen, wenn die Zielaspx-Seite vorhanden ist, jedoch nicht von asp classic auf asp.net übertragen werden kann. (Sie erhalten "Die angegebene 'Page Language =" C# "' Option ist unbekannt oder ungültig. Fehler '8000d001'") Die einzige Möglichkeit, dies würde funktionieren, wenn wir eine 301/302 Redirect statt der Server.Transfer und das ist unerwünscht für uns zu dieser Zeit. (Management ist paranoid und sagt keine Option.)
Um eine 404 zu finden, muss eine Web-Anfrage erstellt werden, und das ist etwas, das ISApi-Rewrite nicht für Sie tun wird. Die einzige Möglichkeit, die ich mir vorstellen kann, ist, dass Sie ASP-Dateien einzeln manuell zur ini-Datei hinzufügen, während Sie sie konvertieren. –
Oder, wenn Dinge in Ordnern sind (hoffentlich für 9.000+ Seite Website sie sind), dann können Sie es 1 Ordner auf einmal tun. –
@Chris Es gibt in der Tat viele Ordner, aber einige von ihnen enthalten viele Tausende von Seiten, was es unrealistisch macht, wenn man Personal und Zeit unterliegt, dass wir uns verpflichten können, ein ganzes Verzeichnis gleichzeitig zu erstellen. –