اگر SSL فعال است ولی مرورگر قفل را نشان نمی‌دهد یا «Not Secure» می‌نویسد، تقریباً همیشه علت «محتوای ترکیبی» است: خود صفحه با https باز شده، اما یک تصویر، فونت یا اسکریپت داخل آن هنوز با آدرس http صدا زده می‌شود. گواهی سالم است؛ آدرس‌های قدیمی داخل سایت باید اصلاح شوند.

اول تشخیص دهید کدام حالت است

چیزی که می‌بینید علت
صفحه‌ی قرمز «Your connection is not private» گواهی نصب یا معتبر نیست
سایت با https باز می‌شود ولی قفل نیست یا علامت هشدار دارد محتوای ترکیبی
سایت هنوز با http باز می‌شود ریدایرکت به https تنظیم نشده

برای حالت اول، وضعیت گواهی را در سی‌پنل ببینید: فعال‌سازی SSL.

پیدا کردن محتوای ترکیبی

در مرورگر، F12 را بزنید و زبانه‌ی Console را باز کنید. خط‌هایی با عبارت Mixed Content آدرس دقیق فایل مشکل‌دار را نشان می‌دهند. از روی آدرس می‌فهمید مقصر کجاست: تصویر داخل نوشته، فایل قالب، یا یک افزونه.

رفع در وردپرس، به ترتیب

۱. آدرس سایت

در «تنظیمات ← عمومی»، هر دو فیلد نشانی وردپرس و نشانی سایت باید با https:// شروع شوند.

تنظیمات عمومی وردپرس
تنظیمات عمومی وردپرس: هر دو نشانی باید https باشند

۲. آدرس‌های قدیمی در دیتابیس

تصاویری که قبل از فعال شدن SSL در نوشته‌ها گذاشته‌اید با http ذخیره شده‌اند. با یک افزونه‌ی «جستجو و جایگزینی» همه‌ی http://دامنه‌شما را به https://دامنه‌شما تبدیل کنید. قبلش از دیتابیس بکاپ بگیرید و جایگزینی را مستقیم در phpMyAdmin انجام ندهید؛ داده‌های سریال‌شده‌ی وردپرس خراب می‌شوند.

۳. آدرس‌های ثابت در قالب و ابزارک‌ها

لوگو، تصویر پس‌زمینه و کدهایی که دستی در تنظیمات قالب یا ابزارک‌ها گذاشته‌اید را بررسی کنید.

۴. منابع بیرونی

اگر اسکریپت یا فونتی از سایت دیگری با http بارگذاری می‌شود، آدرسش را https کنید؛ اگر آن سایت https ندارد، حذفش کنید.

۵. کش را خالی کنید

کش افزونه‌ی کش و مرورگر، نسخه‌ی قدیمی صفحه را نگه می‌دارند.

ریدایرکت http به https

برای اینکه همه‌ی بازدیدکننده‌ها به نسخه‌ی امن بروند، ریدایرکت ۳۰۱ بگذارید. در سی‌پنل، بخش Domains گزینه‌ی Force HTTPS Redirect را دارد؛ یا در htaccess.:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
فهرست دامنه‌ها در سی‌پنل شامل دامنه‌های پارک‌شده
فهرست دامنه‌ها در سی‌پنل؛ گزینه‌ی Force HTTPS Redirect کنار هر دامنه است

یک راه موقت

افزودن این سربرگ به htaccess. به مرورگر می‌گوید درخواست‌های http را خودش https کند. مشکل را پنهان می‌کند، ولی تا وقتی آدرس‌ها را درست می‌کنید مفید است:

Header always set Content-Security-Policy "upgrade-insecure-requests"

سوال‌های رایج

محتوای ترکیبی به سئو آسیب می‌زند؟

هشدار مرورگر اعتماد بازدیدکننده را کم می‌کند و مرورگرها بعضی از این فایل‌ها را اصلاً بارگذاری نمی‌کنند؛ یعنی بخشی از صفحه خراب دیده می‌شود.

بعد از https شدن، ریدایرکت بی‌پایان می‌گیرم.

دو قانون ریدایرکت با هم تداخل دارند (مثلاً افزونه و htaccess.). یکی را بردارید.

SSL چیست و چرا لازم است؟

گواهی SSL به زبان ساده.

بیشتر بخوانید: خطای Too many redirects بعد از فعال کردن SSL.