آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

آموزش بازنویسی URL در ASP.Net MVC Core

دوره های مرتبط با این مقاله

آموزش بازنویسی URL در ASP.NET Core 2.0

Problem

چگونگی بازنویسی URL در ASP.NET Core پیاده سازی. کنیم.

Solution

در فایل Startup ، RewriteOptions و middleware برای بازنویسی URL پیکربندی می کنیم(configure).

public void Configure(  
          IApplicationBuilder app,  
          IHostingEnvironment env)  
      {  
          var rewrite = new RewriteOptions()  
              .AddRedirect("films", "movies")  
              .AddRewrite("actors", "stars", true);  
  
         app.UseRewriter(rewrite);  
  
          app.Run(async context =>  
          {  
              var path = context.Request.Path;  
              var query = context.Request.QueryString;  
              await context.Response.WriteAsync($"New URL: {path}{query}");  
          });  
      }  

اجرا کنید و به /films بروید. شما تغییر مسیر را متوجه خواهید شد.

آموزش Asp.net Core

اجرا کنید و به /actors بروید. شما تغییر مسیر را متوجه خواهید شد.

آموزش Asp.net Core

Discussion

URL Rewritingدرباره تغییر URL درخواست شده بر اساس قوانین سفارشی است تا آدرس را از منابع زیر جدا کند. این مسئله می تواند به دلایل امنیتی مانند SEO، user-friendly URL و تبدیل HTTP به HTTPS و غیره باشد.

هنگامی که شما قادر به استفاده از ویژگی های بازنویسی سرورهای وب نیستید (IIS, Apache, Nginx) ASP.NET Core یک گزینه متناوب را فراهم می کند، به عنوان مثال، Response Rewrite middleware.عملکرد و ویژگی های آن با ویژگی های بازنویسی سرور برابری نمی کند.

بازنویسی middleware قادر به انجام هر دو تغییر مسیر و بازنویسی است.

Redirect

این عملیات در client-side است و مانند این کار می کند:

  1. Client در خواست یک resource می کند برای مثال /films.
  2. سرور به طور محلی به مکان جدید نقشه می دهد برای مثال /stars و return 200(OK)
  3. Clientهیچ چیزی در مورد این فرایند داخلی نمی داند و هنوز URL درخواست شده را در نوار آدرس مشاهده می کند.

Rules

قوانین Redirect و Rewrite در واقع Regular Expressions هستند، جزئیات آن را می توانید در بخش "Useful Links" در زیر پیدا کنید.

Custom Rules

شما همچنین می توانید قوانین سفارشی را با ایجاد یک کلاس و اجرای رابط IRule ایجاد کنید.

public class MoviesRedirectRule : IRule  
  {  
      private readonly string[] matchPaths;  
      private readonly PathString newPath;  
  
      public MoviesRedirectRule(string[] matchPaths, string newPath)  
      {  
          this.matchPaths = matchPaths;  
          this.newPath = new PathString(newPath);  
      }  
  
      public void ApplyRule(RewriteContext context)  
      {  
          var request = context.HttpContext.Request;  
  
          // if already redirected, skip  
          if (request.Path.StartsWithSegments(new PathString(this.newPath)))  
          {  
              return;  
          }  
  
          if (this.matchPaths.Contains(request.Path.Value))  
          {  
              var newLocation = $"{this.newPath}{request.QueryString}";  
  
              var response = context.HttpContext.Response;  
              response.StatusCode = StatusCodes.Status302Found;  
              context.Result = RuleResult.EndResponse;  
              response.Headers[HeaderNames.Location] = newLocation;  
          }  
      }  
  }  

قانون سفارشی می تواند به RewriteOptions اضافه شود.

var rewrite = new RewriteOptions()  
          .Add(new MoviesRedirectRule(  
                  matchPaths: new[] { "/films", "/features", "/albums" },  
                  newPath: "/movies"));  

شما می توانید Source Code از لینک زیر دانلود کنید.

  • 764
  •    694
  • تاریخ ارسال :   1396/08/10

دانلود PDF دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .