SSL روی سایت نصب شده، اما بعضی صفحات خطا دارند؛ مشکل Mixed Content و ریدایرکت HTTPS در وردپرس
یکی از مشکلاتی که بعد از فعالسازی گواهی SSL برای سایتهای وردپرسی زیاد مشاهده میشود، این است که **SSL روی دامنه نصب شده، اما برخی صفحات همچنان هشدار امنیتی دارند، بهدرستی با HTTPS باز نمیشوند یا مرورگر پیام Mixed Content نمایش میدهد.**
این مشکل معمولاً به این معنی نیست که گواهی SSL اشتباه نصب شده است؛ بلکه در بسیاری از موارد، بخشی از محتوای سایت هنوز با آدرس `HTTP` فراخوانی میشود یا ریدایرکت HTTP به HTTPS بهدرستی انجام نشده است.
در این مقاله، یکی از مشکلات پرتکراری را که در طول سالها فعالیت در حوزه هاستینگ و پشتیبانی سایت با آن مواجه بودهام بررسی میکنم و راهحلهای عملی آن را توضیح میدهم.
سؤال کاربر
> SSL روی سایت نصب کردم، اما بعضی صفحات ارور میدهند و مرورگر هشدار امنیتی نمایش میدهد. مشکل از کجاست و چطور میتوانم تمام صفحات سایت را روی HTTPS باز کنم؟
پاسخ
بعد از نصب SSL، دو مورد را باید بررسی کنید:
1. آیا تمام درخواستهای سایت از HTTP به HTTPS ریدایرکت میشوند؟
2. آیا داخل صفحات سایت، فایلها و منابعی مثل تصاویر، CSS و JavaScript هنوز با HTTP فراخوانی میشوند؟
مورد دوم همان مشکلی است که با عنوان **Mixed Content** شناخته میشود.
—
Mixed Content چیست؟
فرض کنید صفحه اصلی سایت شما با آدرس زیر باز میشود:
`https://example.com`
اما در کد HTML صفحه، یک تصویر با آدرس زیر قرار گرفته باشد:
`http://example.com/images/logo.png`
در این حالت، خود صفحه با HTTPS بارگذاری شده، اما تصویر از طریق HTTP درخواست میشود. به این وضعیت **Mixed Content** گفته میشود.
این مشکل میتواند برای موارد مختلفی مانند موارد زیر اتفاق بیفتد:
* تصاویر
* فایلهای CSS
* فایلهای JavaScript
* فونتها
* فایلهای ویدئویی و صوتی
* iframeها
* لینکهای داخلی
* منابعی که توسط افزونهها یا قالب وردپرس بارگذاری میشوند
در نتیجه ممکن است SSL بهدرستی نصب شده باشد، اما مرورگر همچنان برای صفحه هشدار نمایش دهد یا بعضی منابع را به دلیل مسائل امنیتی مسدود کند.

چطور Mixed Content را پیدا کنیم؟
صفحهای که مشکل دارد را در مرورگر باز کنید و با فشردن `F12` وارد Developer Tools شوید.
در بخش **Console** معمولاً خطاهایی مشابه این مورد مشاهده میکنید:
`Mixed Content: The page at ‘https://example.com’ was loaded over HTTPS, but requested an insecure resource ‘http://example.com/…’.`
آدرس `//:http` موجود در خطا معمولاً مشخص میکند کدام فایل یا منبع هنوز با HTTP فراخوانی میشود.
رفع Mixed Content در وردپرس
یکی از دلایل رایج این مشکل، باقی ماندن آدرس قدیمی سایت در دیتابیس وردپرس است.
ابتدا در وردپرس از مسیر:
تنظیمات ← عمومی
بررسی کنید که هر دو گزینه زیر با HTTPS تنظیم شده باشند:
* نشانی وردپرس (WordPress Address)
* نشانی سایت (Site Address)
باید به شکل زیر باشند:
`https://example.com`
و نه:
`http://example.com`
همچنین اگر آدرسهای HTTP در محتوای قدیمی، تنظیمات قالب یا افزونهها ذخیره شده باشند، باید آنها را نیز اصلاح کنید.
استفاده از Really Simple SSL
برای کاربران وردپرس، یکی از سادهترین روشها استفاده از افزونه **Really Simple SSL** است.
این افزونه میتواند در شناسایی و مدیریت بسیاری از مشکلات مربوط به HTTPS کمک کند و باعث شود سایت بهصورت صحیح با SSL کار کند.
با این حال، نصب افزونه بهتنهایی همیشه تمام مشکلات Mixed Content را حل نمیکند. اگر یک تصویر، فایل CSS، JavaScript یا منبع خارجی همچنان با HTTP فراخوانی شود، باید منبع آن را بهصورت دستی پیدا و اصلاح کرد.
بنابراین بهتر است بعد از فعالسازی HTTPS، چند صفحه مهم سایت را نیز بررسی کنید.
ریدایرکت HTTP به HTTPS در وردپرس
حتی اگر SSL روی سایت فعال باشد، بهتر است زمانی که کاربر آدرس زیر را وارد میکند:
`http://example.com`
بهصورت خودکار به آدرس زیر منتقل شود:
`https://example.com`
یکی از روشهای انجام این کار، استفاده از فایل `.htaccess` است.
اگر سایت روی هاست لینوکس و Apache یا LiteSpeed قرار دارد، میتوانید قوانین ریدایرکت را در فایل `.htaccess` موجود در ریشه سایت قرار دهید.
کد عمومی ریدایرکت HTTP به HTTPS به شکل زیر است:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
این قانون بررسی میکند که آیا درخواست با HTTPS دریافت نشده است یا خیر؛ اگر درخواست با HTTP باشد، آن را با 301 Redirect به نسخه HTTPS همان آدرس منتقل میکند.
برای مثال:
`http://example.com/about`
به:
`https://example.com/about`
ریدایرکت میشود.
این روش برای انتقال کل سایت به HTTPS کاربرد دارد. آموزش کاملتر ریدایرکت HTTP به HTTPS با `.htaccess` را نیز میتوانید در [این آموزش از مرکز آموزش میهن وب هاست](https://mihanwebhost.com/my/knowledgebase.php?action=displayarticle&id=309&utm_source=chatgpt.com) مشاهده کنید.
—
یک نکته مهم درباره .htaccess.
کد ریدایرکت را باید با دقت در فایل htaccess. قرار دهید؛ مخصوصاً اگر وردپرس، افزونههای کش، افزونه SSL یا قوانین دیگری در این فایل وجود داشته باشند.
قبل از اعمال تغییرات، بهتر است از فایل htaccess. نسخه پشتیبان تهیه کنید.
همچنین اگر سایت شما پشت Cloudflare یا یک Reverse Proxy قرار دارد، شرایط تشخیص HTTPS میتواند متفاوت باشد و نباید بدون بررسی، قوانین ریدایرکت مختلف را پشت سر هم اضافه کرد؛ زیرا ممکن است باعث Redirect Loop یا خطای `ERR_TOO_MANY_REDIRECTS` شوید.
اگر بعد از فعالسازی SSL هنوز بعضی صفحات مشکل دارند چه کنیم؟
من معمولاً در چنین مواردی این مراحل را به ترتیب بررسی میکنم:
۱. بررسی فعال بودن SSL
ابتدا مطمئن شوید گواهی SSL برای دامنه و زیردامنههای موردنیاز نصب و معتبر است.
برای اینکار وارد هاست سی پنل شده و طبق تصویر زیر مطمئن شوید ssl روی هاست و دامنه Active یا فعال شده است.

۲. بررسی آدرس وردپرس
در تنظیمات وردپرس، آدرس سایت باید با `//:https` شروع شود.
۳. بررسی ریدایرکت
آدرس `//:http` سایت را مستقیماً در مرورگر باز کنید و ببینید آیا به نسخه HTTPS منتقل میشود یا خیر.
۴. بررسی Mixed Content
صفحه مشکلدار را با Developer Tools مرورگر بررسی کنید و خطاهای Mixed Content را در Console پیدا کنید.
۵. بررسی قالب و افزونهها
گاهی یک افزونه یا قالب، آدرس فایلها را بهصورت ثابت با HTTP ذخیره کرده است.
۶. پاک کردن کش
بعد از اصلاح تنظیمات، کش وردپرس، افزونه کش، LiteSpeed Cache، CDN یا Cloudflare را در صورت استفاده پاک کنید.
جمعبندی
نصب SSL پایان کار نیست. بعد از فعالسازی گواهی باید مطمئن شوید که تمام سایت، منابع داخلی و درخواستهای آن از HTTPS استفاده میکنند.
اگر صفحه با HTTPS باز شود اما تصویر، CSS، JavaScript یا فونت آن از HTTP دریافت شود، مشکل Mixed Content ایجاد خواهد شد.
از طرف دیگر، باید HTTP را نیز به HTTPS ریدایرکت کنید تا کاربران و موتورهای جستجو نسخه صحیح و امن سایت را دریافت کنند.
در تجربه پشتیبانی از هزاران سایت، بسیاری از مشکلاتی که کاربران بهعنوان «خرابی SSL» گزارش میکنند، در واقع مربوط به Mixed Content، تنظیمات اشتباه URL وردپرس یا ریدایرکت نادرست HTTP به HTTPS است؛ بنابراین قبل از تعویض یا نصب مجدد گواهی SSL، بهتر است این موارد بررسی شوند.