Добавьте косую черту в конце URL - PullRequest
0 голосов
/ 14 октября 2018

Я использую .NET Core 2.1.Я пытаюсь перенаправить любые не-файловые URL-адреса (не содержит точку) без косой черты на соответствующий URL с косой чертой.Есть ли способ сделать это с помощью rewriteOptions?

        var rewriteOptions = new RewriteOptions()
            .AddRedirect("^[^.]*$", "$1", 301)
            .AddRedirectToHttpsPermanent();

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Шаблон должен соответствовать:

/js                           # has no preceding segements
/www/js                       # has a segment  
/www/test.d/js                # contains a dot within preceding segments 

и не должен совпадать:

/www/js/jquery.js             # contains a dot at last segment
/www/js/                      # has a trailing slash
/www/js/hello.d/jquery.js/    # has a trailing slash

Поэтому создайте такой шаблон, как показано ниже:

var pattern = @"^(((.*/)|(/?))[^/.]+(?!/$))$"; 

var options = new RewriteOptions()
    .AddRedirect(pattern, "$1/",301);

ибудет работать.

Контрольные примеры:

должен перенаправить:

GET https://localhost:5001/js HTTP/1.1
GET https://localhost:5001/xx/js HTTP/1.1
GET https://localhost:5001/xx/test.d/js HTTP/1.1

не должен перенаправлять:

GET https://localhost:5001/xx/js/ HTTP/1.1
GET https://localhost:5001/xx/jquery.js HTTP/1.1
GET https://localhost:5001/xx/hello.d/jquery.js HTTP/1.1
0 голосов
/ 15 октября 2018

В соответствии с этой документацией для добавления завершающего слеша это:

var options = new RewriteOptions()
        .AddRedirect("(.*[^/])$", "$1/")
        .AddRedirectToHttpsPermanent();

Чтобы предотвратить это в статических файлах, убедитесь, что app.UseStaticFiles(); вызывается перед * 1008.* app.UseRewriter(options);

, поэтому:

// Return static files and end the pipeline.
app.UseStaticFiles(); // <--- **before** the redirect

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

Вызов UseStaticFiles () первым приведет к сокращению конвейера для статических файлов.Таким образом, перенаправления не выполняются для статических файлов.

Подробнее о запуске. Настройте порядок здесь:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware/?view=aspnetcore-2.1#order

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