Mixed Content (Karışık İçerik) Hatası Nedir, Nasıl Düzeltilir?
Mixed content (karışık içerik), HTTPS ile açılan bir sayfanın içindeki görsel, script, stil dosyası veya fontun hâlâ http:// adresinden yüklenmesidir. SSL sertifikanız doğru kurulu olsa bile bu durumda tarayıcı sayfayı tam güvenli saymaz: adres çubuğundaki kilit kaybolur, “Güvenli değil” uyarısı çıkar veya bazı dosyalar hiç yüklenmez. İyi haber şu ki sorun sertifikada değil, sayfadaki bağlantılardadır ve birkaç adımda düzeltilir.
Mixed content neden olur?
En sık görülen sebepler şunlardır:
- Site HTTP’den HTTPS’e taşındı ama veritabanındaki eski http:// bağlantılar güncellenmedi.
- Tema ayarlarında, özel CSS’te veya widget’larda logo ve arka plan görselleri sabit http:// adresiyle yazılmış.
- Harici bir servisten (eski bir harita, video, sayaç, reklam kodu) http:// ile içerik çekiliyor.
- Bir eklenti veya tema, dosya adreslerini kendisi üretirken http:// kullanıyor.
Aktif ve pasif karışık içerik farkı
| Tür | Örnek | Tarayıcı ne yapar? |
|---|---|---|
| Pasif (görüntü içeriği) | Görsel, video, ses dosyası | Modern tarayıcılar dosyayı otomatik olarak https:// ile yüklemeyi dener; olmazsa dosya görünmez veya kilit kaybolur. |
| Aktif (çalıştırılabilir içerik) | JavaScript, CSS, iframe, font | Tamamen engellenir. Menü, slider, form veya sayfa düzeni bozulabilir. |
Aktif karışık içerik daha ciddidir, çünkü saldırgan http üzerinden gelen bir script’i değiştirip sayfanın tamamını kontrol edebilir. Bu yüzden tarayıcılar bunu hiç çalıştırmaz.
Karışık içerik nasıl bulunur?
- Sorunlu sayfayı Chrome’da açın, sağ tık > İncele > Console sekmesine geçin.
- “Mixed Content: The page at ‘https://…’ was loaded over HTTPS, but requested an insecure …” ile başlayan satırları arayın. Satırın sonunda http:// ile yüklenen dosyanın tam adresi yazar.
- Daha fazla ayrıntı için Security sekmesine bakın; sayfanın güvenli olmayan kaynak içerip içermediğini gösterir.
- Sitenin tamamını taramak için Screaming Frog gibi bir tarayıcı aracı veya “Why No Padlock” türü çevrimiçi kontrol araçlarını kullanabilirsiniz.
Firefox’ta aynı bilgiyi Geliştirici Araçları > Konsol bölümünde, Safari’de Geliştir > JavaScript Konsolu’nda bulursunuz.
WordPress’te mixed content nasıl düzeltilir?
1. Site adreslerini kontrol edin
Ayarlar > Genel sayfasındaki “WordPress Adresi” ve “Site Adresi” alanlarının ikisi de https:// ile başlamalıdır.
2. Veritabanındaki eski bağlantıları değiştirin
Yazı içeriklerindeki görseller ve iç linkler için toplu arama-değiştirme yapın. Önce yedek alın. WP-CLI ile önce deneme modunda çalıştırın:
wp search-replace 'http://www.alanadiniz.com' 'https://www.alanadiniz.com' --all-tables --dry-run
Sonuç doğruysa aynı komutu --dry-run olmadan çalıştırın. Komut satırı kullanmıyorsanız “Better Search Replace” eklentisi aynı işi panelden yapar. Veritabanını phpMyAdmin’de elle düzenlemeyin; serileştirilmiş veriler bozulabilir.
3. Tema, widget ve özel CSS’i kontrol edin
Konsolda görünen ama veritabanı değişikliğinden sonra hâlâ duran adresler genellikle şuralardadır: tema seçeneklerindeki logo ve favicon alanları, Görünüm > Özelleştir > Ek CSS, metin widget’ları ve sayfa oluşturucu (Elementor, Enfold, WPBakery) ayarları. Buralardaki http:// adresleri https:// yapın.
4. Önbelleği temizleyin
Önbellek eklentisi (W3 Total Cache, WP Rocket, LiteSpeed Cache) eski sayfa kopyalarını sunuyor olabilir. Değişikliklerden sonra tüm önbelleği ve varsa CDN önbelleğini temizleyin, ardından sayfayı gizli pencerede tekrar kontrol edin.
Sunucu tarafında kalıcı çözüm: upgrade-insecure-requests
Tek tek bulunamayan veya sizin kontrolünüzde olmayan bağlantılar için tarayıcıya “bu sayfadaki tüm http:// isteklerini https:// olarak yap” diyebilirsiniz. Bunu bir Content-Security-Policy başlığıyla yaparsınız:
- Apache (.htaccess):
Header always set Content-Security-Policy "upgrade-insecure-requests" - Nginx (server bloğu):
add_header Content-Security-Policy "upgrade-insecure-requests" always; - Plesk: Web Siteleri ve Alan Adları > alan adınız > Apache ve nginx Ayarları > “Ek nginx yönergeleri” alanına Nginx satırını ekleyebilirsiniz.
Bu yöntem, harici sunucu HTTPS desteklemiyorsa dosyayı yine yükleyemez. Asıl çözüm bağlantıları kaynağında düzeltmektir; bu başlık bir güvenlik ağıdır.
Sık görülen durumlar ve çözümleri
| Belirti | Olası neden | Çözüm |
|---|---|---|
| Sadece ana sayfada kilit yok | Slider veya logo görseli http:// ile yükleniyor | Tema ayarlarındaki görsel adresini https:// yapın |
| Eski yazılarda kilit yok, yenilerde var | Eski içerikteki görsel adresleri güncellenmemiş | Veritabanında search-replace yapın |
| Menü veya slider çalışmıyor | Bir JavaScript dosyası http:// ile çağrılıyor ve engelleniyor | Script adresini https:// yapın veya eklentiyi güncelleyin |
| Fontlar yüklenmiyor | Google Fonts veya font dosyası http:// ile çağrılıyor | Font bağlantısını https:// yapın |
| Gömülü harita veya video boş | iframe adresi http:// | Gömme kodunu servisten https:// olarak yeniden alın |
Site taşıma sürecinin tamamı için WordPress’te HTTP’den HTTPS’e Geçiş rehberimize bakabilirsiniz. Sertifikanızın doğru kurulup kurulmadığını SSL araçlarımızla kontrol edebilir, tarayıcıda başka bir hata görüyorsanız “Bağlantınız gizli değil” hatası rehberini inceleyebilirsiniz.
SSL sertifikalarını ve güncel TL fiyatlarını inceleyin »
Sıkça sorulan sorular
Mixed content SEO’yu etkiler mi?
Dolaylı olarak evet. Google HTTPS’i olumlu bir sinyal sayar; “Güvenli değil” uyarısı ziyaretçinin sayfadan hemen çıkmasına neden olabilir. Engellenen script’ler sayfa düzenini bozarsa kullanıcı deneyimi de zarar görür.
SSL sertifikamı değiştirmem gerekir mi?
Hayır. Mixed content sertifika hatası değildir; sertifikanız geçerliyken de oluşur. Sorun sayfadaki bağlantılardadır.
Eklentiyle düzeltebilir miyim?
“Really Simple SSL” gibi eklentiler bağlantıları sayfa yüklenirken anlık olarak https:// yapar. Hızlı bir geçici çözümdür, ancak veritabanındaki adresleri kalıcı olarak düzeltmek daha temiz ve daha hızlıdır.
Düzelttim ama uyarı hâlâ görünüyor.
Büyük ihtimalle önbellek eski sayfayı gösteriyordur. Site önbelleğini, CDN önbelleğini ve tarayıcı önbelleğini temizleyip sayfayı gizli pencerede açın.

