لطفا در مورد اینکه چجوری میشه سایت رو بعد از اینکه روی یک هاست بارگزاری کردیم به https ری دایرکت کنیم راهنمایی کنید.
توضیح :
https://mysite.ir
توضیح مشکل :
اما مشکل اینجاست که سایت باید بعد از بارگزاری روی هاست فقط و فقط به صورت زیر نمایش داده بشه
https://mysite.ir
اما در حال حاضر سایت با آدرس های زیر هم نمایش داده میشه که این موضوع میتونه باعث بروز خطای 403 بشه و همچنین از نظر سیو میتونه سایت رو ضعیف کنه
http://mysite.ir
www.mysite.ir
http://www.mysite.ir
در واقع میخوام کاربر هر کدوم از Url های بالا رو زد به آدرس اصلی که با https شروع میشه هدایت بشه.
میتونید از Middleware
app.UseHttpsRedirection();
استفاده کنید. روش دوم هم استفاده از Rewriting Middleware هست.
نحوه ری دایرکت از http به https در Asp.net core
همونطوری که در متن سوال هم گفتید موضوع ری دایرکت از http به https اهمیت زیادی داره. از مهم ترین مواردی که برای این کار میشه ذکر کرد اینه که اگر اطلاعاتی که بین سایت شما و کاربر سایت شما از اهمیت بالایی برخوردار باشه مثل درگاههای بانکی یا اطلاعات سایتهایی مثل ثبت احوال و ... شخصی بتونه در این بین این اطلاعات رو شنود کنه عملا اطلاعات سایت و اطلاعات کاربران شما لو میره.
بنابراین لازم هست حتما این ری دایرکت از http به https انجام بشه تا اطلاعات انتقالی از سایت به کلاینت با امنیت بالاتری انجام بشه.
نحوه فعالسازی https
معمولا موارد بالا توسط خود شرکت هاست یا شرکتی که گواهینامه ssl از آن خریداری کرده اید انجام می شود.
ری دایرکت از http به https در کنترل پنل plesk یا cpanel
اما موضوع مهم بعدی بحث ری دایرکت از http به https می باشد. یعنی اگر کاربر شما هر کدام از Url های زیر را وارد کرد به Url شامل https هدایت شود
//اشتباه
www.mysite.ir
http://mysite.ir
http://www.mysite.ir
//صحیح
https://mysite.ir
دقت کنید که وظیفه اصلی ری دایرکت از http به https بر عهده خود هاست می باشد و معمولا شرکت های ارائه دهنده خدمات هاستینگ و گواهینامه ssl با انجام تنظیمات این کار را انجام می دهند و معمولا نیازی نیست برنامه نویس کاری انجام دهد.
اما با این حال ممکن است برخی از شرکت های ارائه دهنده هاست این کار را انجام ندهند و برنامه نویس می بایست عملیات ری دایرکت از http به https را انجام دهد.
نحوه ری دایرکت از http به https در Asp.net core
برای اینکه شما بتوانید به عنوان یک برنامه نویس از http به https ری دایرکت انجام دهید موقع ایجاد پروژه باید تیک configure for https را بزنید تا تنظیمات مربوط به https در پروژه شما ایجاد شود.
در حال حاضر فایل appsetting.json شما باید چیزی مشابه با زیر باشد:
{
"ConnectionStrings": {
"MyConnectionString": "Data Source=.;Initial Catalog=DataBasename;user Id=sa;Password=1"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}
خب حالا در کلاس startup.cs و در متد ConfigureServices دستور زی را در انتهای متد اضافه کنید
var optRewrite = new RewriteOptions().AddRedirectToHttpsPermanent();
اکنون به متد Configure بیابید و دستورات زیر را اضافه کنید :
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
//
app.UseHttpsRedirection();
app.Use(async (context, next) =>
{
string sHost = context.Request.Host.HasValue == true ? context.Request.Host.Value : ""; //domain without :80 port .ToString();
sHost = sHost.ToLower();
string sPath = context.Request.Path.HasValue == true ? context.Request.Path.Value : "";
string sQuerystring = context.Request.QueryString.HasValue == true ? context.Request.QueryString.Value : "";
if (!context.Request.IsHttps)
{
string new_https_Url = "https://" + sHost;
if (sPath != "")
{
new_https_Url = new_https_Url + sPath;
}
if (sQuerystring != "")
{
new_https_Url = new_https_Url + sQuerystring;
}
context.Response.Redirect(new_https_Url);
return;
}
if (sHost.IndexOf("www.") == 0)
{
string new_Url_without_www = "https://" + sHost.Replace("www.", "");
if (sPath != "")
{
new_Url_without_www = new_Url_without_www + sPath;
}
if (sQuerystring != "")
{
new_Url_without_www = new_Url_without_www + sQuerystring;
}
context.Response.Redirect(new_Url_without_www);
return;
}
await next();
});
//
app.UseSession();
app.UseStaticFiles();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
app.UseCookiePolicy();
}
در کدهای بالا همه حالات خطا که در بالا گفته شد بررسی شده و در صورتی که هر کدام از Url های اشتباه وارد شود به Url صحیح که با https شروع می شود تبدیل می شود.
تاریخ :
1402/04/28
- ساعت :
09:04:00 PM
- بازدید :
1314
- پاسخ :
0
|
تاریخ :
1403/12/01
- ساعت :
01:07:00 PM
- بازدید :
175
- پاسخ :
0
|
تاریخ :
1403/12/26
- ساعت :
03:04:00 PM
- بازدید :
69
- پاسخ :
1
|
تاریخ :
1403/12/23
- ساعت :
11:21:00 AM
- بازدید :
157
- پاسخ :
1
|
تاریخ :
1399/09/20
- ساعت :
01:21:00 PM
- بازدید :
6831
- پاسخ :
1
|
تاریخ :
1403/12/22
- ساعت :
11:05:00 AM
- بازدید :
187
- پاسخ :
1
|
تاریخ :
1403/12/19
- ساعت :
11:21:00 PM
- بازدید :
75
- پاسخ :
1
|
تاریخ :
1403/12/18
- ساعت :
07:24:00 PM
- بازدید :
106
- پاسخ :
1
|
تاریخ :
1398/09/06
- ساعت :
09:06:00 PM
- بازدید :
3426
- پاسخ :
1
|
تاریخ :
1399/12/15
- ساعت :
08:08:00 PM
- بازدید :
3582
- پاسخ :
1
|
تاریخ :
1404/01/07
- ساعت :
05:02:00 AM
- بازدید :
89
- پاسخ :
1
|
تاریخ :
1402/04/28
- ساعت :
09:04:00 PM
- بازدید :
1314
- پاسخ :
0
|
تاریخ :
1403/12/30
- ساعت :
06:43:00 PM
- بازدید :
66
- پاسخ :
1
|
تاریخ :
1398/08/23
- ساعت :
09:16:00 PM
- بازدید :
9852
- پاسخ :
1
|
تاریخ :
1404/01/03
- ساعت :
12:18:00 PM
- بازدید :
38
- پاسخ :
1
|
تاریخ :
1404/01/03
- ساعت :
10:39:00 AM
- بازدید :
45
- پاسخ :
1
|
تاریخ :
1404/01/02
- ساعت :
05:05:00 PM
- بازدید :
60
- پاسخ :
1
|
تاریخ :
1403/12/30
- ساعت :
06:52:00 PM
- بازدید :
48
- پاسخ :
1
|
تاریخ :
1399/06/04
- ساعت :
02:25:00 PM
- بازدید :
4419
- پاسخ :
2
|
تاریخ :
1403/11/30
- ساعت :
10:36:00 AM
- بازدید :
202
- پاسخ :
2
|