Задать вопрос
@Sneiksus

Regex для проверки www в адресной строке?

Хочу написать AddRedirect для переадресации с www на non-www.Каким регулярным выражением можно проверть есть ли в url www. ?
  • Вопрос задан
  • 54 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
@FreeBa
Если речь идет о asp.net core, то можно использовать миддлвар. Что-то вроде такого:
public class RedirectToNoWwwRule : IRule
{
    public virtual void ApplyRule(RewriteContext context)
    {
        var req = context.HttpContext.Request;
        if (req.Host.Host.Equals("localhost", StringComparison.OrdinalIgnoreCase))
        {
            context.Result = RuleResult.ContinueRules;
            return;
        }

        if (!req.Host.Value.StartsWith("www.", StringComparison.OrdinalIgnoreCase))
        {
            context.Result = RuleResult.ContinueRules;
            return;
        }

        var NoWwwHost = new HostString(req.Host.Value.Substring(4));
        var newUrl = UriHelper.BuildAbsolute(req.Scheme, NoWwwHost , req.PathBase, req.Path, req.QueryString);
        var response = context.HttpContext.Response;
        response.StatusCode = 301;
        response.Headers[HeaderNames.Location] = newUrl;
        context.Result = RuleResult.EndResponse;
    }
}


После создаем метод расширения
public static class RewriteOptionsExtensions
{
    public static RewriteOptions AddRedirectNoWww(this RewriteOptions options)
    {
        options.Rules.Add(new RedirectToNoWwwRule());
        return options;
    }
}


и потом прописываем в Startup.cs в Configure
var options = new RewriteOptions();
options.AddRedirectNoWww();
app.UseRewriter(options);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы