Или наоборот, как я могу переписать URL, только если он не существует?например, перехват 404.
Вот контекст: мы медленно переводим наш сайт с классического ASP на ASP.NET.Медленно я имею в виду преобразование 9000+ .asp страниц по одной странице за раз в .aspx.
При этом мы хотим предотвратить любые неработающие ссылки, а также не потерять ни одного рейтинга в поисковых системах.Это означает, что все наши URL-адреса .asp должны продолжать существовать, даже если они будут обслуживаться страницами .aspx.
То, что я хотел бы сделать, - это иметь правило (правила) ISAPI-Rewrite, которое будет перезаписываться.asp -> .aspx, если целевой URL фактически не существует, и в этом случае он просто запустится и вернет .asp.
Так что, если мы еще не конвертировали somepage.asp в .aspx, URL-адрес будетне будет переписано и somepage.asp будет отображаться.Как только somepage.asp исчезнет, URL-адрес будет переписан на somepage.aspx, который будет выполнен и возвращен, но веб-браузер / поисковая система будет думать, что он получил somepage.asp.
В какой-то момент в будущем мы установим канонический URL на страницах .aspx и позволим поисковым системам наверстать упущенное.
Примечание: у меня естьЭкспериментировал с использованием пользовательского 404 в IIS для проверки файловой системы и выполнения Server.Transfer, если целевая страница .aspx существует, однако вы не можете перейти с asp classic на asp.net.(Вы получаете "Указанный параметр 'Page Language =" c # "' неизвестен или недействителен. Ошибка '8000d001'") Единственный способ, которым это сработало бы, это если бы мы сделали перенаправление 301/302 вместо Server.Transfer, и этонежелательно для нас в это время.(Управление параноидально и говорит, что это не вариант.)