غياب القفل عن موقع يحمل شهادة صالحة معناه محتوى مختلط: الصفحة جاءت عبر https وشيء داخلها لم يأتِ كذلك. فيحجب المتصفّح أو يخفض التصنيف، ويذهب القفل.
اعثر عليه من مكان واحد
وحدة التحكّم تسمّي العنوان بالضبط. وتخمين أيّ صورة هي يضيّع وقتًا أطول بكثير من فتحها.
// browser console
Mixed Content: The page at 'https://...' was loaded over HTTPS,
but requested an insecure resource 'http://...'.
من أين يأتي عادةً
- عناوين http:// المطلقة داخل قاعدة البيانات — كُتبت يوم كان الموقع على http ولم تُحدَّث قطّ.
- عنوان سكربت أو خطّ مكتوب حرفيًّا داخل القالب.
- عنصر مضمَّن — خريطة أو فيديو أو أداة — ما زال مزوّده على http.
أصلح قاعدة البيانات
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables --precise
خذ نسخة احتياطية قبل البحث والاستبدال. فهو يعيد كتابة كلّ جدول، والبيانات المسلسلة قد يفسدها استبدال ساذج — استخدم أداة تفهم التسلسل، وهذا ما يفعله wp search-replace.
التقط الباقي
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
هذا يطلب من المتصفّح جلب الموارد الفرعية عبر https بدلًا من http. وهو شبكة أمان لما لا تملكه، لا بديلًا عن إصلاح عناوينك أنت — فإن لم يكن لدى الطرف الآخر https فشل المورد.
أنفضّل العنوان بلا بروتوكول؟ لا
//example.com/x.js كان الجواب القديم ولم يعد مستحسنًا: فهو ينكسر في صفحة تُفتح محلّيًّا عبر file://، ويخفي أيّ بروتوكول هو المقصود. اكتب https:// صراحةً.
بعد الإصلاح، أعد التحميل تحميلًا قسريًّا. فالمتصفّح يخزّن حكمه على الصفحة ويظلّ يعرض القفل المكسور من مخزنه.