چرا سایت بعد از نصب SSL امن نمایش داده نمی‌شود، یکی از پرتکرارترین مشکلاتی است که مدیران سایت‌های وردپرسی با آن روبرو می‌شوند. نصب گواهی SSL، پایان راه نیست؛ آغاز فرآیندی است که در آن باید چند لایه از سایت هماهنگ شوند تا مرورگر قفل امن را نمایش دهد. برخلاف تصور رایج، نصب موفق گواهی به‌تنهایی کافی نیست؛ اگر حتی یک منبع HTTP در صفحه بارگذاری شود، مرورگر قفل امن را حذف می‌کند و هشدار امنیتی نمایش می‌دهد. در این مقاله، چارچوبی عملی برای شناسایی و رفع این مشکل ارائه می‌شود.

در پروژه‌های متعدد وردپرسی، دیده‌ام که این مشکل، اغلب با یک اصلاح دقیق در چند لایه حل می‌شود و نیازی به بازطراحی کامل سایت ندارد.

چرا سایت امن نمایش داده نمی‌شود؟

  • محتوای ترکیبی (Mixed Content).
  • ریدایرکت ناقص HTTP به HTTPS.
  • تنظیمات نادرست CDN.
  • گواهی SSL نامعتبر یا منقضی.
  • عدم تطابق دامنه گواهی.
  • خطای زنجیره گواهی.
  • URLهای سخت‌کدشده در قالب یا افزونه.
  • داده‌های Serialized خراب.
«نمایش قفل امن، نتیجه هماهنگی چند لایه است؛ یک منبع HTTP، این هماهنگی را می‌شکند.»

چرا نمایش قفل امن مهم است؟

  • افزایش اعتماد کاربر.
  • کاهش نرخ پرش.
  • بهبود نرخ تبدیل.
  • جلوگیری از هشدار مرورگر.
  • حفظ رتبه سئو.
  • حفاظت از داده‌های حساس.

محتوای ترکیبی: عامل اصلی

محتوای ترکیبی، بارگذاری منابع HTTP در صفحه HTTPS است که مرورگر آن را به‌عنوان خطای امنیتی تلقی می‌کند.

انواع محتوای ترکیبی

نوعنمونهسطح خطر
Activescript، iframe، styleبحرانی
Passiveتصویر، ویدئو، صدامتوسط
Formform actionبالا
XHRدرخواست HTTP از JSبالا

شناسایی محتوای ترکیبی

  • Chrome DevTools → Console.
  • Why No Padlock.
  • SSL Labs.
  • Mixed Content Scanner.
  • curl و grep در خط فرمان.

جستجو و جایگزینی در دیتابیس

روش WP-CLI (توصیه‌شده)

wp search-replace 'http://example.com' 'https://example.com' --all-tables --precise

روش افزونه Better Search Replace

  1. نصب افزونه.
  2. Tools → Better Search Replace.
  3. وارد کردن URL قدیمی و جدید.
  4. Dry Run.
  5. اجرای واقعی.

Serialized Data

داده‌های سریالایز شده، با جستجوی ساده خراب می‌شوند چون طول رشته در آنها ذخیره شده است.

a:2:{s:4:"home";s:22:"http://example.com";...}

راهکار: WP-CLI با --precise یا افزونه‌های تخصصی.

بررسی قالب

  • جستجوی 'http://' در تمام فایل‌های قالب.
  • بررسی فایل header.php و footer.php.
  • بررسی functions.php.
  • بررسی فایل‌های CSS.
  • بررسی فایل‌های JS.

بررسی افزونه‌ها

  • غیرفعال‌سازی افزونه‌ها یکی‌یکی.
  • بررسی تنظیمات افزونه‌های کش.
  • بررسی تنظیمات افزونه‌های SEO.
  • بررسی افزونه‌های Page Builder.
  • بررسی افزونه‌های ایمیل مارکتینگ.

مشکلات CDN

  • تنظیم SSL روی Full (Strict).
  • فعال‌سازی Automatic HTTPS Rewrites.
  • فعال‌سازی Always Use HTTPS.
  • Purge Cache پس از تغییرات.

مشکلات گواهی

  • بررسی انقضا.
  • بررسی مطابقت دامنه.
  • بررسی زنجیره گواهی.
  • بررسی الگوریتم رمزنگاری.

مشکلات ریدایرکت

  • ریدایرکت 301 در .htaccess.
  • ریدایرکت در wp-config.php.
  • ریدایرکت در CDN.
  • پرهیز از حلقه ریدایرکت.

HSTS و مشکلات آن

HSTS، اگر به‌درستی پیکربندی نشود، می‌تواند دسترسی سایت را مسدود کند.

نکات مهم

  • شروع با max-age کوچک.
  • پرهیز از includeSubDomains در ابتدا.
  • پرهیز از preload قبل از تثبیت.
  • در صورت خطا، امکان بازگشت وجود ندارد.

رفع مشکلات رایج

مشکل: Mixed Content

جستجو و جایگزینی در دیتابیس و بررسی قالب و افزونه‌ها.

مشکل: حلقه ریدایرکت

بررسی تنظیمات SSL در CDN، .htaccess و wp-config.php.

مشکل: خطای گواهی

بررسی زنجیره، انقضا و مطابقت دامنه.

مشکل: عدم دسترسی به پنل مدیریت

پاک‌سازی کوکی‌ها و بررسی Force SSL Admin.

رویکردهای توصیه‌شده

  • بکاپ کامل پیش از تغییرات.
  • جستجوی URLهای کامل، نه صرف پروتکل.
  • رفع Serialized Data با WP-CLI.
  • پاک‌سازی کش چندلایه.
  • تست با مرورگرهای مختلف.
  • پایش مستمر.

اشتباهات رایج

اشتباهاثر عملیاتی
جستجوی صرف 'http://'خرابی URL خارجی
نادیده گرفتن Serialized Dataخرابی داده‌ها
نبود بکاپعدم بازگشت
عدم بررسی قالبMixed Content باقی می‌ماند
نادیده گرفتن iframeخطای امنیتی
عدم پاک‌سازی کشمحتوای قدیمی
نادیده گرفتن CDNحلقه ریدایرکت
نبود پایش پس از رفععدم تشخیص باقی‌مانده
اتکا صرف به CSPریشه حل نمی‌شود
نبود مستندسازیسردرگمی

پرسش‌های پرتکرار

چرا سایت من بعد از SSL امن نمایش داده نمی‌شود؟

اغلب به دلیل محتوای ترکیبی، ریدایرکت ناقص یا تنظیمات نادرست CDN.

چگونه Mixed Content را رفع کنم؟

با جستجو و جایگزینی URLهای HTTP در دیتابیس و بررسی قالب و افزونه‌ها.

چرا قفل امن در برخی صفحات نمایش داده می‌شود اما در برخی نه؟

بخشی از صفحات ممکن است محتوای ترکیبی داشته باشند که از قالب یا افزونه خاصی ناشی می‌شود.

چگونه مطمئن شوم Mixed Content رفع شده؟

با بازدید از همه صفحات و بررسی Console مرورگر، یا با Why No Padlock.

آیا CSP می‌تواند Mixed Content را رفع کند؟

به‌عنوان لایه مکمل بله، اما ریشه‌ای حل نمی‌کند.

چگونه از خرابی Serialized Data جلوگیری کنم؟

با WP-CLI (--precise) یا افزونه‌های تخصصی.

چرا بعد از پاک‌سازی کش، مشکل بازگشت؟

احتمالاً بخشی از منابع هنوز با HTTP در دیتابیس باقی مانده است.

آیا مشکل امن نمایش داده نشدن بر سئو اثر دارد؟

بله، به‌طور مستقیم از طریق اعتماد کاربر و رفتار مرورگر.

پایان‌بندی

نمایش نشدن قفل امن پس از نصب SSL، یکی از پرتکرارترین مشکلات وردپرس است که با رویکردی سیستماتیک، به‌طور کامل رفع می‌شود. شناسایی دقیق Mixed Content، رفع در دیتابیس و بررسی قالب، افزونه و CDN، بخشی از این فرآیند است.

از منظر مهندسی سطح ارشد، سه اصل در رفع این مشکل تعیین‌کننده است: استفاده از URLهای کامل در جستجو و جایگزینی، مدیریت دقیق Serialized Data، و بررسی همه لایه‌های سایت.

برای درک عمیق‌تر، مقاله چرا بعد از SSL بعضی فایل‌ها با HTTP باز می‌شوند؟ و مقاله نصب SSL روی سایت و برطرف کردن خطای HTTPS را مطالعه کنید.

اگر در پروژه‌های خود تجربه‌ای از رفع این مشکل داشته‌اید، تجربه‌تان را در دیدگاه‌ها بنویسید. 🔒