اگر SSL روی سایت شما فعال است، بهتر است مطمئن شوید که کاربران فقط از طریق نسخه امن HTTPS به سایت دسترسی دارند. فعال بودن گواهی SSL بهتنهایی کافی نیست؛ ممکن است سایت همچنان با هر دو آدرس http:// و https:// باز شود، اینجاست که نیاز هست آموزش ریدایرکت http به https داده بشه تا به درستی این انتقال انجام شود.
بعد از فعالسازی گواهی SSL، در این حالت باید نسخه HTTP را به صورت دائمی به نسخه HTTPS ریدایرکت کنید تا یک نسخه اصلی و امن از URL سایت در اختیار کاربران و موتورهای جستجو قرار داشته باشد.
چرا باید HTTP را به HTTPS ریدایرکت کنیم؟
HTTPS ارتباط بین مرورگر کاربر و سرور را رمزنگاری میکند و برای محافظت از اطلاعات منتقل شده استفاده میشود. این موضوع مخصوصاً در سایتهایی که فرم ورود، ثبت نام، خرید، پرداخت یا اطلاعات کاربر دارند اهمیت زیادی دارد.
اما موضوع فقط امنیت نیست. وقتی یک سایت با هر دو پروتکل HTTP و HTTPS در دسترس باشد، بهتر است نسخه HTTP به نسخه HTTPS منتقل شود تا کاربران و موتورهای جستجو به نسخه امن و اصلی سایت هدایت شوند.
گوگل نیز تغییر URL از HTTP به HTTPS را بهعنوان یک تغییر پروتکل در نظر میگیرد و برای این انتقال، استفاده از ریدایرکتهای دائمی سمت سرور را توصیه میکند.
مزایای انتقال HTTP به HTTPS
- رمزنگاری ارتباط بین کاربر و سایت
- افزایش امنیت اطلاعات منتقل شده
- جلوگیری از نمایش هشدارهای امنیتی مرورگر در شرایط مرتبط
- ایجاد یک نسخه اصلی و یکپارچه از URL در سایت
- جلوگیری از باقی ماندن نسخه HTTP در دسترس کاربران
- کمک به مدیریت صحیح URL در موتورهای جستجو
- فراهم شدن بستر مناسب برای قابلیتهایی که به HTTPS نیاز دارند
البته HTTPS به تنهایی باعث کسب رتبه بهتر در نتایج جستجو نمیشود؛ موضوع اصلی این است که انتقال HTTP به HTTPS به صورت فنی و صحیح انجام شود.
ابتدا بررسی کنید HTTPS واقعاً فعال است یا نه
قبل از تغییر تنظیمات وردپرس یا فایل .htaccess، ابتدا باید مطمئن شوید SSL روی دامنه شما فعال است.
برای این کار مرورگر را باز کنید و آدرس سایت را با https:// وارد کنید:
https://example.com
اگر سایت بدون خطای گواهی SSL باز شد، HTTPS روی دامنه قابل استفاده است.
حالا نسخه HTTP را امتحان کنید:
http://example.com
نتیجه مطلوب چیست؟
اگر نسخه HTTP را وارد کردید، باید به صورت خودکار به نسخه HTTPS منتقل شوید:
http://example.com
↓
https://example.com
همین بررسی را برای یک صفحه داخلی نیز میتوانید انجام دهید:
http://example.com/about/
و انتظار میرود به:
https://example.com/about/
منتقل شود.
اگر هر دو نسخه باز میشوند چه؟
اگر این دو آدرس:
http://example.com
https://example.com
هر دو بدون ریدایرکت محتوای سایت را نمایش میدهند، یعنی باید وضعیت ریدایرکت HTTP به HTTPS را بررسی و اصلاح کنید.
نکته: فعال بودن SSL با ریدایرکت بودن HTTP به HTTPS دو موضوع متفاوت هستند. ممکن است گواهی SSL کاملاً سالم باشد اما سرور هنوز درخواستهای HTTP را به HTTPS منتقل نکند.
تنظیم آدرس سایت در وردپرس
اگر از وردپرس استفاده میکنید، یکی از قسمتهای مهم تنظیمات HTTPS، بخش:
پیشخوان وردپرس ← تنظیمات ← عمومی
است.
در این قسمت معمولاً دو گزینه مربوط به آدرس سایت مشاهده میکنید:
- نشانی وردپرس (URL)
- نشانی سایت (URL)
وردپرس توضیح میدهد که نشانی وردپرس محل قرارگیری فایلهای اصلی WordPress است و نشانی سایت، آدرسی است که کاربران برای دسترسی به سایت استفاده میکنند.
اگر وردپرس در ریشه دامنه نصب شده باشد
برای مثال اگر دامنه سایت شما:
example.com
باشد، معمولاً هر دو گزینه باید به شکل زیر باشند:
https://example.com
یعنی:
نشانی وردپرس:
https://example.com
نشانی سایت:
https://example.com
دقت کنید که در پایان URL نیازی به / نیست. مستندات رسمی WordPress نیز توصیه میکنند این دو مقدار شامل https:// باشند و در انتهای آنها اسلش قرار نگیرد.
اگر سایت از www استفاده میکند
اگر نسخه اصلی سایت شما:
https://www.example.com
است، هر دو گزینه باید مطابق همان نسخه تنظیم شوند:
https://www.example.com
یعنی مهم است که نسخه اصلی دامنه سایت را بدانید و همان را در تنظیمات وردپرس استفاده کنید.
قبل از تغییر آدرس وردپرس دقت کنید
تغییر این دو گزینه موضوع حساسی است. اگر آدرس را اشتباه وارد کنید، ممکن است دسترسی به سایت یا پیشخوان وردپرس دچار مشکل شود.
بنابراین اگر سایت شما در حال حاضر با HTTPS به درستی کار میکند، قبل از تغییر تنظیمات بهتر است از فایلها و دیتابیس سایت نسخه پشتیبان داشته باشید.
وردپرس نیز هشدار میدهد که تغییر URL میتواند باعث از دسترس خارج شدن بخش مدیریت یا سایت شود و در چنین شرایطی ممکن است نیاز به اصلاح مقادیر از طریق دیتابیس یا wp-config.php باشد.
ریدایرکت HTTP به HTTPS با .htaccess
اگر SSL فعال است اما درخواستهای HTTP به HTTPS منتقل نمیشوند، در سرورهای Apache/LiteSpeed میتوان از فایل .htaccess برای ایجاد ریدایرکت استفاده کرد.
کد زیر یکی از روشهای ساده برای انتقال HTTP به HTTPS است:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
این کد چه کاری انجام میدهد؟
خط اول:
RewriteEngine On
سیستم Rewrite آپاچی را فعال میکند.
خط دوم:
RewriteCond %{HTTPS} !=on
بررسی میکند که درخواست فعلی از طریق HTTPS نیست.
در صورتی که درخواست HTTP باشد، قانون بعدی اجرا میشود.
خط سوم:
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
درخواست را به نسخه HTTPS همان URL منتقل میکند.
برای مثال:
http://example.com/
به:
https://example.com/
و:
http://example.com/blog/article/
به:
https://example.com/blog/article/
منتقل میشود.
مسیر صفحه و درخواست مربوط به URL نیز حفظ میشود.
منظور از R=301 چیست؟
301 به معنی Permanent Redirect یا ریدایرکت دائمی است.
یعنی به مرورگر و موتورهای جستجو اعلام میشود که URL موردنظر به صورت دائمی به آدرس جدید منتقل شده است.
برای انتقال HTTP به HTTPS، ریدایرکت سمت سرور و دائمی یکی از روشهای توصیه شده در راهنمای Google Search Central است.
آیا این کد را باید در هر سایتی قرار داد؟
خیر، اگر هاست، کنترل پنل، LiteSpeed، Cloudflare یا تنظیمات دیگری از قبل HTTP را به HTTPS منتقل میکند، اضافه کردن یک قانون دیگر ممکن است غیرضروری باشد.
ابتدا تست کنید:
http://example.com
اگر مستقیماً به:
https://example.com
منتقل شد، ریدایرکت HTTP به HTTPS از قبل انجام میشود.
در این شرایط بهتر است بدون دلیل چند سیستم مختلف برای انجام یک ریدایرکت ایجاد نکنید.
بعد از فعال کردن ریدایرکت چه چیزهایی را تست کنیم؟
بعد از تنظیمات، فقط صفحه اصلی را بررسی نکنید. چند URL مختلف را آزمایش کنید.
۱. صفحه اصلی
http://example.com
باید به:
https://example.com
برسد.
۲. یک صفحه داخلی
http://example.com/about/
باید به نسخه HTTPS همان صفحه منتقل شود.
۳. یک نوشته
http://example.com/blog/example/
باید مستقیماً به:
https://example.com/blog/example/
برسد.
۴. URL دارای Query String
برای مثال:
http://example.com/?p=123
بررسی کنید که درخواست به نسخه HTTPS منتقل شود و پارامترهای موردنیاز از بین نروند.
۵. نسخه www و بدون www
اگر سایت شما فقط یکی از این دو نسخه را بهعنوان دامنه اصلی انتخاب کرده است، هر دو حالت را نیز آزمایش کنید:
https://example.com
https://www.example.com
این موضوع جدا از HTTP به HTTPS است و ممکن است برای یکپارچه سازی نسخه دامنه به تنظیمات ریدایرکت دیگری نیاز داشته باشد.
تأثیر HTTPS بر سئو
انتقال HTTP به HTTPS در واقع تغییر پروتکل URL در سایت است. بنابراین نباید آن را صرفاً یک تغییر ظاهری در مرورگر در نظر گرفت.
برای مثال:
http://example.com/article/
و:
https://example.com/article/
دو URL متفاوت هستند.
به همین دلیل هنگام انتقال باید ریدایرکتها، URL داخلی، لینکهای Canonical، Sitemap و سایر بخشهای مرتبط با URL بررسی شوند.
Google Search Central نیز HTTPS migration را در دسته تغییرات URL سایت قرار میدهد و توصیه میکند قبل از انتقال، سایت جدید را آزمایش کرده و سپس ریدایرکت URL قدیمی به URL جدید را تنظیم کنید.
از ایجاد زنجیره ریدایرکت جلوگیری کنید
بهتر است URL HTTP مستقیماً به URL نهایی HTTPS برود.
مثلاً این حالت مناسب نیست:
HTTP
↓
HTTPS + www
↓
HTTPS بدون www
اگر نسخه نهایی سایت شما مثلاً:
https://www.example.com
است، بهتر است درخواست HTTP در نهایت با کمترین تعداد ریدایرکت به همین URL برسد.
Google نیز توصیه میکند از زنجیرههای طولانی ریدایرکت اجتناب شود و URL قدیمی تا حد امکان مستقیماً به URL نهایی منتقل شود.
بعد از انتقال HTTPS چه مواردی را بررسی کنیم؟
پس از فعال شدن HTTPS بهتر است این موارد را بررسی کنید:
- آدرس وردپرس در تنظیمات ← عمومی
- آدرس سایت در تنظیمات ← عمومی
- ریدایرکت HTTP به HTTPS
- لینکهای داخلی سایت
- Canonical صفحات
- Sitemap
- فایل
robots.txt - تصاویر و فایلهای CSS و JavaScript
- لینکهای موجود در منوها
- کدهای سفارشی و اسکریپتهای خارجی
- تنظیمات افزونههای کش و CDN
- Google Search Console
- ابزارهای آمار و تحلیل سایت
اگر بعضی منابع سایت هنوز با HTTP فراخوانی شوند، ممکن است با مشکل Mixed Content مواجه شوید. بنابراین بعد از انتقال، صفحات مهم را بررسی کنید.
آیا باید HTTP را در گوگل سرچ کنسول حذف کنیم؟
خیر، انتقال HTTP به HTTPS به معنی تغییر دامنه نیست. Google برای انتقال HTTP به HTTPS، استفاده از ابزار Change of Address را لازم نمیداند؛ این ابزار برای تغییر دامنه یا برخی تغییرات مربوط به سایت/هاست استفاده میشود، نه صرفاً تغییر پروتکل در همان دامنه.
با این حال بهتر است وضعیت URL در HTTPS و گزارشهای Search Console را پس از انتقال زیر نظر داشته باشید.
جمع بندی
اگر SSL روی سایت شما فعال است، این مراحل را انجام دهید:
۱. ابتدا HTTPS را تست کنید
https://example.com
۲. سپس HTTP را تست کنید
http://example.com
۳. اگر HTTP به HTTPS منتقل نشد، ریدایرکت را بررسی کنید.
۴. در وردپرس به مسیر زیر بروید:
پیشخوان ← تنظیمات ← عمومی
و در حالت معمول، هر دو URL را با https:// تنظیم کنید:
WordPress Address:
https://example.com
Site Address:
https://example.com
۵. ریدایرکت دائمی HTTP به HTTPS را در سطح سرور تنظیم کنید.
برای Apache/LiteSpeed میتوانید از این کد استفاده کنید:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
۶. در نهایت چند صفحه مختلف سایت را با HTTP تست کنید و مطمئن شوید همگی مستقیماً به نسخه HTTPS منتقل میشوند.
هدف نهایی این است که برای هر URL، یک نسخه اصلی و امن داشته باشید؛ برای مثال:
http://example.com/page/
↓ 301
https://example.com/page/
و کاربران و موتورهای جستجو در نهایت به نسخه HTTPS دسترسی پیدا کنند.
