Добавить перенаправление URL только для запросов GET - PullRequest
0 голосов
/ 03 февраля 2020

Я настраиваю свое основное приложение asp. net с таким правилом перенаправления, чтобы добавить sla sh в конце:

app.UseRewriter(new RewriteOptions().AddRedirect("(.*[^/])$", "$1/"));

Но по какой-то причине при выполнении POST-запрос без sla sh, запрос преобразуется в GET-запрос? Я не уверен, почему это происходит, но я подумал об одном способе - применить это правило перезаписи только к GET-запросам и игнорировать другие методы. Но как мне настроить перезаписывающее устройство для этого?

1 Ответ

0 голосов
/ 04 февраля 2020

Вы можете написать собственное правило перенаправления, например

public class RedirectRuleTest : IRule
{
    public void ApplyRule(RewriteContext context)
    {
        HttpRequest request = context.HttpContext.Request;

        if(request.Method == "GET")
        {
            //Add your conditions
            //for example following code adds "/" to any urlwhich is not ending with "/"

            if (!request.Path.Value.ToLower().EndsWith("/"))
            {
                context.HttpContext.Response.Redirect($"{request.Path.Value}/");
                context.Result = RuleResult.SkipRemainingRules;
            }
        }

    }
}

Startup.cs Confgure:

app.UseRewriter(new RewriteOptions().Add(new RedirectRuleTest()));
app.UseRouting();
...