چرا سایت بعد از نصب SSL امن نمایش داده نمیشود؟
چرا سایت بعد از نصب SSL امن نمایش داده نمیشود؟ بررسی محتوای ترکیبی، ریدایرکت، CDN و راهکارهای عملی برای بازگرداندن قفل امن.
چرا سایت بعد از نصب SSL امن نمایش داده نمیشود، یکی از پرتکرارترین مشکلاتی است که مدیران سایتهای وردپرسی با آن روبرو میشوند. نصب گواهی SSL، پایان راه نیست؛ آغاز فرآیندی است که در آن باید چند لایه از سایت هماهنگ شوند تا مرورگر قفل امن را نمایش دهد. برخلاف تصور رایج، نصب موفق گواهی بهتنهایی کافی نیست؛ اگر حتی یک منبع HTTP در صفحه بارگذاری شود، مرورگر قفل امن را حذف میکند و هشدار امنیتی نمایش میدهد. در این مقاله، چارچوبی عملی برای شناسایی و رفع این مشکل ارائه میشود.
در پروژههای متعدد وردپرسی، دیدهام که این مشکل، اغلب با یک اصلاح دقیق در چند لایه حل میشود و نیازی به بازطراحی کامل سایت ندارد.
چرا سایت امن نمایش داده نمیشود؟
- محتوای ترکیبی (Mixed Content).
- ریدایرکت ناقص HTTP به HTTPS.
- تنظیمات نادرست CDN.
- گواهی SSL نامعتبر یا منقضی.
- عدم تطابق دامنه گواهی.
- خطای زنجیره گواهی.
- URLهای سختکدشده در قالب یا افزونه.
- دادههای Serialized خراب.
«نمایش قفل امن، نتیجه هماهنگی چند لایه است؛ یک منبع HTTP، این هماهنگی را میشکند.»
چرا نمایش قفل امن مهم است؟
- افزایش اعتماد کاربر.
- کاهش نرخ پرش.
- بهبود نرخ تبدیل.
- جلوگیری از هشدار مرورگر.
- حفظ رتبه سئو.
- حفاظت از دادههای حساس.
محتوای ترکیبی: عامل اصلی
محتوای ترکیبی، بارگذاری منابع HTTP در صفحه HTTPS است که مرورگر آن را بهعنوان خطای امنیتی تلقی میکند.
انواع محتوای ترکیبی
| نوع | نمونه | سطح خطر |
|---|---|---|
| Active | script، iframe، style | بحرانی |
| Passive | تصویر، ویدئو، صدا | متوسط |
| Form | form 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
- نصب افزونه.
- Tools → Better Search Replace.
- وارد کردن URL قدیمی و جدید.
- Dry Run.
- اجرای واقعی.
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 را مطالعه کنید.
اگر در پروژههای خود تجربهای از رفع این مشکل داشتهاید، تجربهتان را در دیدگاهها بنویسید. 🔒