Как реализовать промежуточное программное обеспечение ASP.NET Core для удаления повторяющихся слешей в URL-адресе запроса? - PullRequest
0 голосов
/ 23 октября 2018

В предыдущей версии ASP.NET MVC допускались URL-адреса, подобные следующим: https://www.trap.com//house.

Теперь это генерирует 404, что в некотором смысле имеет смысл. Мне нравится, что по умолчанию ASP.NET Core MVC теперь менее терпим к бессмыслице в целом.

Но мне остается только подумать, как поступить с предложением реализации промежуточного программного обеспечения для решения этой проблемы. Я нашел этот пример , но я не хочу перенаправлять пользователя на «правильный» или канонический URL - я хочу допустить плохой.

Другими словами, я хочу, чтобы URL https://www.trap.com//house был перенаправлен так, как если бы это был URL https://www.trap.com/house.Или URL https://www.trap.com///house/////4 для маршрутизации, как если бы это был URL https://www.trap.com/house/4.

Каков наилучший способ добиться этого?Перезапись URL?Специальные маршруты?Что-то еще?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

В итоге я использовал промежуточное программное обеспечение для перезаписи, хотя, вероятно, в конечном итоге его удаляю ...

        var rewriteOptions = new RewriteOptions()
            .AddRewrite("^///?(.*)$", "/$1", false)
            .AddRewrite("^///?(.*)///?(.*)$", "/$1/$2", false); //etc, maybe you could make a regex that catches all these patterns
        app.UseRewriter(rewriteOptions);
0 голосов
/ 23 октября 2018

Лучший способ, конечно, это исправить приложения, отправляющие неправильные URL-адреса.В свете того, что это вряд ли произойдет, я бы предложил добавить некоторые правила перезаписи URL, которые обрабатывают их до передачи URL-адреса в MVC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...