خطای محتوای ترکیبی (Mixed Content) چیست؟
پس از نصب موفقیتآمیز گواهینامه SSL، مرورگرها باید آیکون قفل سبز رنگ را نمایش دهند. اگر قفل نمایش داده نمیشود یا به رنگ خاکستری/قرمز است، سایت شما احتمالاً با خطای Mixed Content مواجه شده است.
Mixed Content زمانی رخ میدهد که صفحه اصلی سایت شما با پروتکل امن HTTPS بارگذاری میشود، اما برخی از منابع (مانند تصاویر، فایلهای CSS یا اسکریپتها) هنوز به صورت ناامن با پروتکل HTTP فراخوانی میشوند. مرورگر این منابع را مسدود میکند یا با هشدار نمایش میدهد.
بخش اول: راهحل سریع (ریدایرکت خودکار در cPanel)
اولین قدم برای اطمینان از اینکه همه بازدیدکنندگان به نسخه HTTPS هدایت میشوند، بررسی ریدایرکت سراسری در cPanel است.
۱. فعالسازی ریدایرکت HTTPS در cPanel
-
وارد پنل کاربری و سپس cPanel شوید.
-
در بخش Security (امنیت)، ابزار Domains (یا Redirects) را پیدا کنید.
-
اگر ابزاری با عنوان Force HTTPS Redirect وجود دارد، آن را برای دامنههای مورد نظر فعال (On) کنید. این کار به صورت خودکار قوانین ریدایرکت لازم را اعمال میکند.
-
(اگر این ابزار در cPanel شما وجود ندارد، میتوانید از روش دستی (
.htaccess) که در مقاله ۵ توضیح داده شد، استفاده کنید.)
-
۲. بررسی تنظیمات وردپرس
اگر سایت وردپرسی است، اطمینان حاصل کنید که آدرسهای اصلی سایت در دیتابیس صحیح باشند:
-
وارد پیشخوان وردپرس شوید.
-
به Settings (تنظیمات) » General (عمومی) بروید.
-
مطمئن شوید که هر دو فیلد WordPress Address (URL) و Site Address (URL) با
https://شروع شده باشند (مثلاًhttps://yourdomain.com).
بخش دوم: شناسایی و رفع منابع HTTP در کد
اگر ریدایرکت کلی مشکل را حل نکرد، باید فایلها و کدهای مشخصی را که هنوز به صورت HTTP فراخوانی میشوند، شناسایی و اصلاح کنید.
۱. شناسایی منابع مشکلساز در مرورگر
-
در مرورگر خود (مانند Chrome)، روی صفحه سایت راست کلیک کرده و Inspect (بازرسی) را انتخاب کنید.
-
به تب Console (کنسول) بروید.
-
در این قسمت، اخطارهای مربوط به Mixed Content با پیامی شبیه به این نمایش داده میشوند:
Mixed Content: The page at 'https://...' was loaded over HTTPS, but requested an insecure image 'http://...' -
آدرس HTTP نمایش داده شده در پیام خطا، منبع مشکلساز است.
۲. استفاده از افزونههای وردپرس (توصیه شده)
سادهترین راه برای رفع سریع مشکل Mixed Content در وردپرس، استفاده از افزونه است:
-
وارد پیشخوان وردپرس شوید.
-
افزونه Really Simple SSL را نصب و فعال کنید. این افزونه به صورت خودکار با بازنویسی آدرسهای HTTP در زمان بارگذاری صفحه، مشکل Mixed Content را حل میکند.
۳. اصلاح دستی آدرسها در دیتابیس
اگر نمیخواهید از افزونه استفاده کنید، باید آدرسهای HTTP موجود در دیتابیس را به HTTPS تغییر دهید.
-
وارد cPanel و سپس phpMyAdmin شوید.
-
دیتابیس سایت خود را انتخاب کنید.
-
از طریق تب SQL، دستور زیر را برای جایگزینی سراسری آدرسها اجرا کنید. (حتماً
yourdomain.comرا با دامنه خود جایگزین کنید):
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://yourdomain.com', 'https://yourdomain.com');
بخش سوم: بررسی فایلهای پیکربندی و کش
گاهی اوقات خطای Mixed Content به دلیل کش شدن محتوای قدیمی و ناامن یا تنظیمات نادرست در فایلهای موقت است.
۱. پاکسازی کش در وردپرس و سرور
-
وردپرس: اگر از افزونههای کش (مانند LiteSpeed Cache یا WP Rocket) استفاده میکنید، حتماً تمام سطوح کش (Object Cache, Browser Cache, Server Cache) را پاکسازی (Purge All Cache) کنید.
-
مرورگر: کش مرورگر خود را پاک کنید یا از حالت Incognito/Private Browsing برای بررسی سایت استفاده کنید.
۲. بررسی فایلهای .htaccess و wp-config.php
-
وارد File Manager در cPanel شوید.
-
فایل
.htaccessرا بررسی کنید. مطمئن شوید هیچ دستور ریدایرکتی (Redirect) که به زور آدرسها را به HTTP هدایت کند، وجود نداشته باشد. -
فایل
wp-config.phpرا بررسی کنید تا مطمئن شوید تنظیمات آدرس سایت به صورت دستی به HTTP تنظیم نشده باشند.
