ریدایرکت HTTP به HTTPS در Apache

ریدایرکت HTTP به HTTPS در Apache

علی مرادی

سرور Apache HTTP یکی از محبوب ترین وب سرورها در جهان است. این سرور HTTP منبع باز و متقاطع است که درصد زیادی از وب سایت های اینترنت را تأمین می کند. آپاچی ویژگیهای بسیار قدرتمندی را ارائه می دهد که می توانند از طریق ماژول های اضافی گسترش یابند.

اگر صاحب وب سایت یا ادمین سیستم هستید ، احتمال دارد که به طور مرتب با Apache سر و کار داشته باشید. یکی از رایج ترین کارهایی که شما احتمالاً انجام می دهید ریدایرکت HTTP به نسخه امن (HTTPS) وب سایت شما است.

برخلاف HTTP ، در جایی که درخواست ها و پاسخ ها به صورت ساده ارسال و دریافت می شوند ، HTTPS از TLS / SSL برای رمزگذاری ارتباط بین مشتری و سرور استفاده می کند.

استفاده از HTTPS نسبت به HTTP مزایای بسیاری دارد ، مانند:

  • Google Chrome و سایر مرورگرهای مشهور وب سایت شما را بی خطر نشان می دهند.
  • HTTPS به شما امکان می دهد از پروتکل HTTP / 2 استفاده کنید ، که به طور قابل توجهی عملکرد سایت را بهبود می بخشد.
  • Google از وب سایت های HTTPS طرفداری می کند. اگر از طریق HTTPS سرو شود سایت شما رتبه بهتری خواهد داشت.

این راهنما نحوه ریدایرکت HTTP به HTTPS در Apache را پوشش می دهد.

چندین روش برای ریدایرکت مجدد به HTTPS در Apache وجود دارد. اگر دسترسی root به سرور لینوکس دارید که Apache در آن اجرا می شود ، راه ارجح تنظیم تغییر مسیر در پرونده پیکربندی میزبان مجازی دامنه است. در غیر این صورت ، می توانید تغییر مسیر را در پرونده .htaccess دامنه تنظیم کنید.

برخی از پنل های کنترل ، مانند cPanel به شما امکان می دهد تا با چند کلیک ماوس ،  HTTPS را فورس کنید.

در ادامه با ما در شتابان هاست همراه باشید.

ریدایرکت HTTP به HTTPS در Apache:

Apache تنظیمات یک یا چند دامنه میزبانی شده بر روی سرور را تعریف می کند. در بخشنامه میزبان مجازی ، می توانید ریشه سند سایت (دایرکتوری حاوی پرونده های وب سایت) را مشخص کنید ، یک سیاست امنیتی جداگانه برای هر سایت ایجاد کنید ، از گواهی های SSL مختلف استفاده کنید ، تغییر مسیر را پیکربندی کنید و موارد دیگر.

به طور معمول وقتی یک گواهینامه SSL روی یک دامنه نصب می شود ، شما دو راهنمای میزبان مجازی برای آن دامنه خواهید داشت. اولین مورد برای نسخه HTTP سایت در پورت ۸۰ و دیگری برای نسخه HTTPS در پورت ۴۴۳٫

در دیتروس های مبتنی بر Red-Hat مانند CentOS و Fedora ، پرونده های میزبان مجازی در /etc/httpd/conf.d ذخیره می شوند. در حالی که در دبیان و مشتقات آن مانند اوبونتو پرونده ها در فهرست /etc/apache2/sites-available ذخیره می شوند.

برای ریدایرکت یک وب سایت به HTTPS ، از دستورالعمل Redirect استفاده کنید همانطور که در مثال زیر نشان داده شده است:

<VirtualHost *:80> 
ServerName example.com
ServerAlias www.example.com

Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com

Protocols h2 http:/1.1

# SSL Configuration

# Other Apache Configuration

</VirtualHost>

بیایید کد را توضیح دهیم. ما از دو راهنمای میزبان مجازی استفاده می کنیم ، یکی برای HTTP و دیگری برای نسخه HTTPS سایت.

  • VirtualHost *: 80 – سرور Apache برای اتصالات ورودی در پورت ۸۰ (HTTP) برای دامنه مشخص شده عمل می کند.
  • VirtualHost *: 443 – سرور Apache اتصالات ورودی در پورت ۴۴۳ (HTTPS) را برای دامنه مشخص شده انجام می دهد.

دستورالعملهای ServerName و ServerAlias نام دامنه میزبان مجازی را مشخص می کنند. حتماً آن را با نام دامنه خود جایگزین کنید.

خط برجسته شده ، تغییر مسیر دائمی / https://example.com/ در هاست مجازی HTTP ، ترافیک را به نسخه HTTPS سایت هدایت می کند.

به طور معمول می خواهید نسخه HTTPS www سایت را به غیر www یا برعکس تغییر مسیر دهید. در اینجا یک پیکربندی به عنوان مثال آورده شده است:

<VirtualHost *:80> 
ServerName example.com
ServerAlias www.example.com

Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com

Protocols h2 http:/1.1

<If "%{HTTP_HOST} == 'www.example.com'">
Redirect permanent / https://example.com/
</If>

# SSL Configuration

# Other Apache Configuration

</VirtualHost>

کد موجود در میزبان مجازی HTTPS (خطوط برجسته) در حال بررسی این است که آیا عنوان درخواست شامل دامنه www و تغییر مسیرها به نسخه غیر www است یا خیر.

هر زمان که در پرونده های پیکربندی تغییراتی ایجاد کردید ، باید سرویس Apache را ری استارت کنید.

دبیان و اوبونتو:

sudo systemctl reload apache2

CentOS و Fedora:

sudo systemctl reload httpd

ریدایرکت HTTP به HTTPS در Apache با استفاده از.htaccess:

.htaccess یک پرونده پیکربندی در هر فهرست برای وب سرور Apache است. این پرونده می تواند برای تعریف نحوه سرویس دهی Apache از پوشه ای که پرونده در آن قرار دارد استفاده شود و ویژگی های اضافی را فعال یا غیرفعال کند.

معمولاً پرونده .htaccess در فهرست دایرکتوری دامنه قرار می گیرد ، اما می توانید پرونده های .htaccess دیگری را نیز در زیرشاخه ها داشته باشید.

این روش نیاز به بارگذاری ماژول mod_rewrite روی سرور Apache دارد. این ماژول به طور پیش فرض در اکثر سرورها بارگیری می شود. در صورت امکان ، ریدایرکت را در طبق آموزش قبل ایجاد كنید زیرا ساده تر و ایمن تر است.

برای ریدایرکت HTTP به HTTPS ، پرونده root .htaccess را باز کنید و کد زیر را به آن اضافه کنید:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

معنی کد چیست:

  • RewriteEngine On – قابلیت بازنویسی را فعال می کند.
  • RewriteCond %{HTTPS} off – بررسی اتصال HTTP را بررسی می کند ، و اگر شرط برآورده شود ، خط بعدی اجرا می شود.
  • RewriteRule ^(.*)$ https://example.com/$1 [L,R=301] – ریدایرکت HTTP به HTTPS با کد وضعیت ۳۰۱ (انتقال دائمی). حتماً نام دامنه را تغییر دهید.

مثال زیر شرط دیگری دارد که بررسی می کند آیا درخواست از www شروع می شود یا خیر. از آن استفاده کنید تا همه بازدید کنندگان را مجبور به استفاده از نسخه www HTTPS سایت کنید:

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

هنگام ویرایش پرونده .htaccess ، نیازی به راه اندازی مجدد سرور ندارید زیرا Apache در هر درخواست ، پرونده را می خواند.

جمع بندی:

در Apache ، راه ارجح برای تغییر مسیر HTTP به HTTPS ، پیكربندی ۳۰۱ در میزبان مجازی دامنه (روش اول) است.

اگر هر گونه سؤال یا بازخورد دارید ، می توانید نظر خود را اعلام کنید.

امیدوارم این مقاله براتون مفید بوده باشه.

ما رو تو شتابان هاست دنبال کنید. 🙂

برچسب ها: Apache SSL