Запуск веб-страниц aspx и .Net Core (.Net 5) на одном сервере и домене

#redirect #.net-core #webforms

Вопрос:

Я собираюсь перенести интернет-магазин со старых веб-форм на новый сайт .Net Core (.Net 5). Старые URL-адреса имеют очень хороший рейтинг в Google, и я хотел бы иметь возможность сделать постоянное перенаправление со страницы aspx на страницу .net core. И т.д.:

www.mydomain.com/products/great-backpack-1234.aspx

Для

www.mydomain.com/great-backpack

Я считаю, что для этого требуется, чтобы у меня было и то, и другое .net core и сайт aspx работают в одном домене. Возможно ли это? Или у кого-нибудь есть какие-нибудь другие идеи по решению?

С уважением

Ответ №1:

Это, вероятно, не нужно для запуска обоих в одном домене или пространстве. Похоже, все закончится в .aspx, и если вы используете MVC, функцию контроллера для перехвата всех запросов, которые не соответствуют другим маршрутам, а затем проверьте, заканчивается ли она в aspx, это должно сделать за вас. Вы можете поместить его в существующий контроллер, но я лично поместил бы его в новый, чтобы разделить проблемы

 public class RedirectController : Controller
{
    [Route("{**url}", Order = 999)]
    public IActionResult RedirectPage(string url)
    {
       //Redirect logic based on the URL given, making sure it ends in aspx
    }
}
 

URL-адрес будет отображаться в параметре url в виде строки, и вы можете проверить, заканчивается ли он на aspx, и каково было название страницы, чтобы определить, куда их отправлять. Так что «www.mydomain.com/products/great-backpack-1234.aspx» будет отображаться в параметре url как «продукты/отличный рюкзак-1234.aspx». Обратите внимание, что поле заказа в атрибуте маршрута гарантирует, что оно будет последним, проверенным на соответствие шаблонам, поэтому оно не должно вмешиваться ни в что другое.