Makale Başlıkları
Kısaca
Mixed content (karışık içerik) hatası, HTTPS ile açılan bir sayfanın içinde HTTP üzerinden yüklenen görsel, script, stil dosyası ya da iframe bulunduğunda ortaya çıkar. Tarayıcı, güvenli sayfayı güvensiz kaynaklarla kirletmemek için bu içerikleri ya engeller ya da kilit ikonunu bozar. Çözüm neredeyse her zaman tek cümlede özetlenir: sayfadaki her kaynağı https:// üzerinden yükle.
- Aktif içerik (script, CSS, iframe) tarayıcı tarafından tamamen bloklanır; pasif içerik (görsel, ses, video) uyarı verir veya otomatik yükseltilir.
- Hatanın kaynağını bulmanın en hızlı yolu tarayıcı konsolundaki “Mixed Content” satırlarını okumaktır.
- Veritabanındaki eski http:// bağlantılarını topluca değiştirmek ve CSP ile upgrade-insecure-requests kullanmak kalıcı çözümdür.
SSL sertifikasını kurdunuz, sitenizi HTTPS’e taşıdınız, ama adres çubuğundaki kilit ikonu bir türlü tam yeşil olmuyor. Bazı tarayıcılarda kilit yerine bir uyarı üçgeni, bazılarında ise “Bağlantınız tam olarak güvenli değil” ibaresi çıkıyor. Konsolu açtığınızda karşınıza kırmızı ya da sarı satırlar dolusu Mixed Content uyarısı geliyor. Bu, HTTPS geçişini yapan hemen her site yöneticisinin er ya da geç karşılaştığı klasik bir sorundur ve iyi haber şu: kaynağını anladığınızda çözümü oldukça mekaniktir.
Bu yazıda mixed content hatasının teknik olarak ne olduğunu, tarayıcıların 2026 itibarıyla bu içeriklere nasıl davrandığını, hatayı adım adım nasıl tespit edeceğinizi ve WordPress dahil farklı senaryolarda kalıcı olarak nasıl temizleyeceğinizi anlatıyorum.
Mixed Content (Karışık İçerik) Nedir?
Bir web sayfası HTTPS üzerinden yüklendiğinde, tarayıcı o sayfanın ve içindeki her kaynağın şifreli bir kanaldan geldiğini varsayar. Karışık içerik, ana sayfa güvenli (HTTPS) olmasına rağmen sayfanın içine gömülü bir kaynağın (bir görsel, bir JavaScript dosyası, bir yazı tipi, bir iframe) güvensiz (HTTP) protokolüyle çağrılması durumudur. Yani sayfa güvenli, ama içindeki bir parça değil; ortaya “karışık” bir güvenlik durumu çıkar.
Sorun sadece kozmetik değildir. HTTP üzerinden gelen bir kaynak, aradaki ağda (ortadaki adam / MITM saldırısı) değiştirilebilir. Saldırgan, HTTP ile yüklenen bir script dosyasının içeriğini yolda değiştirip sayfanıza kötü amaçlı kod enjekte edebilir. İşte bu yüzden tarayıcılar karışık içeriği ciddiye alır ve büyük bölümünü doğrudan engeller.
Aktif ve Pasif İçerik: İki Farklı Muamele
Tarayıcıların karışık içeriğe verdiği tepki, o içeriğin sayfayı ne kadar etkileyebildiğine göre değişir. Bu ayrımı bilmek, hangi hatanın neden “engellendi”, hangisinin sadece “uyarı” olduğunu anlamanızı sağlar.
Aktif (blocklanabilir) içerik, sayfanın tamamını değiştirebilecek güçteki kaynaklardır: JavaScript dosyaları, CSS stil dosyaları, iframe’ler, XMLHttpRequest/fetch çağrıları ve web yazı tipleri. Bir saldırgan bunlardan birini ele geçirirse pratikte sayfanın kontrolünü ele geçirir. Bu yüzden tarayıcılar aktif karışık içeriği istisnasız engeller. Sonuç genellikle bozuk bir tasarım, çalışmayan bir buton ya da yüklenmeyen bir formdur.
Pasif (isteğe bağlı blocklanabilir) içerik, sayfanın yalnızca kendi alanını etkileyen kaynaklardır: görseller, ses ve video dosyaları. Bunların risk düzeyi daha düşüktür, çünkü ele geçirilseler bile en fazla yanlış bir görsel gösterirler; sayfanın kontrolünü ele geçiremezler. Tarayıcılar bu içerikleri genelde engellemek yerine kilit ikonunu bozarak uyarır.
2026’da Tarayıcılar Ne Yapıyor?
Chrome 80’den (2020) itibaren başlayan ve bugün tüm modern tarayıcılarda standart olan davranış şudur: pasif karışık içerik (görsel, ses, video) için tarayıcı önce HTTP adresini otomatik olarak HTTPS’e yükseltmeyi dener. Buna “autoupgrade” denir. Eğer kaynak HTTPS üzerinden de mevcutsa sorunsuz yüklenir; ama HTTPS’te yoksa geri dönüş (fallback) yapılmaz ve görsel hiç yüklenmez. Yani “eskiden görünen resim artık kayıp” şikayetinin çok yaygın nedeni budur: tarayıcı HTTP’ye düşmeyi reddediyordur.
Aktif içerikte ise otomatik yükseltme yoktur; script veya iframe doğrudan bloklanır. Bu tabloyu özetlersek:
| İçerik Türü | Örnekler | Tarayıcı Davranışı (2026) |
|---|---|---|
| Aktif (blocklanabilir) | <script>, <link rel=”stylesheet”>, <iframe>, fetch/XHR, web font | Doğrudan engellenir, hiç yüklenmez |
| Pasif (yükseltilebilir) | <img>, <audio>, <video> | HTTPS’e otomatik yükseltilir; HTTPS’te yoksa yüklenmez |
| Form gönderimi | <form action=”http://…”> | Gönderimden önce uyarı gösterilir |
Hatanın Kaynağını Nasıl Bulursunuz?
Karışık içerikle uğraşırken en büyük hata, tahmin yürütmektir. Tarayıcı size tam olarak hangi dosyanın soruna yol açtığını satır satır söyler; sadece doğru yere bakmak yeterlidir.
1. Tarayıcı Konsolu (En Güvenilir Yöntem)
Sayfada herhangi bir yere sağ tıklayıp İncele (Inspect) seçin, ardından Console sekmesine geçin. Karışık içerik varsa şuna benzer satırlar görürsünüz:
Mixed Content: The page at ‘https://siteniz.com/’ was loaded over HTTPS, but requested an insecure image ‘http://siteniz.com/logo.png’. This content should also be served over HTTPS.
Bu satırdaki ikinci bağlantı (http:// ile başlayan) tam olarak düzeltmeniz gereken kaynaktır. Cümlede “insecure image” mi yoksa “insecure script” mi dendiğine dikkat edin; bu, sorunun pasif mi aktif mi olduğunu doğrudan söyler.
2. Sayfa Kaynağında Arama
Ctrl+U ile sayfa kaynağını açıp http:// ifadesini aratmak, hardcoded (koda gömülü) bağlantıları bulmanın hızlı bir yoludur. Özellikle tema dosyalarına elle eklenmiş logo, ikon veya harici script bağlantıları burada ortaya çıkar.
3. Çevrimiçi Tarayıcılar
Tüm sitenizi tek tek gezmek yerine, sitenizin URL’sini verip karışık içerik raporu çıkaran çevrimiçi araçlar da işinizi kolaylaştırır. Bunlar özellikle çok sayfalı sitelerde nereye bakacağınızı belirlemek için pratiktir.
Kalıcı Çözüm: Adım Adım
Hatayı bulduktan sonra çözüm, kaynağı HTTP yerine HTTPS’ten yüklemektir. Duruma göre birkaç yol izlenir.
1. Veritabanındaki Eski Bağlantıları Topluca Değiştirin
HTTP’den HTTPS’e taşınan sitelerde soruna en sık yol açan şey, veritabanına yıllar içinde kaydedilmiş http://siteniz.com/... biçimindeki bağlantılardır. Yazı içeriklerine gömülü görseller, dahili bağlantılar, tema ayarları hep bu adresle kaydolmuştur. Çözüm, güvenli bir arama-değiştirme aracıyla tüm bu bağlantıları https://siteniz.com/... hâline getirmektir.
WordPress kullanıyorsanız WP-CLI ile şu komut, serileştirilmiş (serialized) verileri de bozmadan güvenli biçimde değiştirir:
wp search-replace 'http://siteniz.com' 'https://siteniz.com' --skip-columns=guid
Doğrudan SQL ile UPDATE çalıştırmaktan kaçının; serileştirilmiş dizilerdeki karakter uzunluğu bilgisini bozar ve widget’lar, tema ayarları çöker.
2. Kodda Gömülü Bağlantıları Düzeltin
Tema ve eklenti dosyalarındaki HTML, CSS ve JavaScript içine elle yazılmış http:// bağlantılarını bulup https:// yapın. Aynı sunucuda barındırdığınız kaynaklar için göreli (relative) bağlantı kullanmak en temiz yaklaşımdır; örneğin http://siteniz.com/style.css yerine /style.css yazmak, protokol sorununu tamamen ortadan kaldırır.
3. CSP ile Otomatik Yükseltme
Onlarca eski bağlantıyı tek tek değiştirmek yerine tarayıcıya “bu sayfadaki her güvensiz isteği otomatik olarak HTTPS’e yükselt” talimatı verebilirsiniz. Bunu Content-Security-Policy başlığıyla yaparsınız:
Content-Security-Policy: upgrade-insecure-requests
Bu direktif, sayfadaki tüm HTTP isteklerini (bloklanabilir aktif içerik dahil) HTTPS’e çevirir ve iframe’lere de yansır. Aynı meta etiketiyle de tanımlanabilir. Not: upgrade-insecure-requests yalnızca kaynak zaten HTTPS’te erişilebiliyorsa çözüm sunar; bir dış kaynak gerçekten HTTPS desteklemiyorsa bu direktif işe yaramaz. Daha katı bir yaklaşım için block-all-mixed-content direktifi tüm karışık içeriği engeller.
4. Harici Kaynakları Elden Geçirin
Sorun kendi sitenizde değil de dışarıdan çektiğiniz bir kaynaktaysa (örneğin HTTPS desteklemeyen eski bir istatistik betiği veya reklam kodu), temiz bir çözüm yoktur. Bu durumda kaynağı HTTPS destekleyen bir alternatifle değiştirmek ya da tamamen kaldırmak dışında seçenek kalmaz. HTTP-only bir kaynağı sitenize proxy’lemeye çalışmak çoğu zaman daha fazla sorun doğurur.
5. Önbellekleri Temizleyin
Bu, en çok atlanan adımdır. Düzeltmelerinizden sonra sunucu önbelleği, LiteSpeed/LSCache gibi eklenti önbellekleri ve varsa CDN önbelleğini mutlaka temizleyin. Aksi halde tarayıcıya hâlâ eski, karışık içerikli sürüm sunulur ve “düzelttim ama geçmedi” yanılgısına düşersiniz.
Hosting Altyapısının Rolü
Mixed content sorunlarının çözümü büyük ölçüde site tarafında olsa da, güvenilir bir barındırma altyapısı süreci ciddi biçimde kolaylaştırır. Her şeyden önce sitenizin geçerli ve otomatik yenilenen bir SSL sertifikasına ihtiyacı vardır; sertifika yoksa HTTPS zaten devrede olmaz. Alastyr hosting paketlerinde ücretsiz SSL standart olarak gelir, böylece karışık içerik düzeltmelerine başlamadan önce güvenli tarafın hazır olduğundan emin olursunuz.
Bunun yanı sıra LiteSpeed + LSCache tabanlı altyapı, düzeltme sonrası önbellek temizliğini tek panelden yapmanızı sağlar; cPanel/Plesk/DirectAdmin panellerinde .htaccess üzerinden HTTP’yi HTTPS’e yönlendirme kuralı eklemek de dakikalar sürer. Yeni bir alan adında baştan HTTPS ile başlamak istiyorsanız alan adı sorgulama ile başlayıp SSL sertifikası tarafını da aynı çatı altında yönetebilirsiniz. WordPress ağırlıklı bir kurulum için ise WordPress hosting paketleri, yukarıda anlatılan WP-CLI ve önbellek adımlarını hazır bir ortamda sunar.
HTTP’yi Kalıcı Olarak HTTPS’e Yönlendirin
Karışık içeriği temizledikten sonra son adım, hiç kimsenin siteye HTTP üzerinden ulaşamamasını sağlamaktır. Apache tabanlı sunucularda .htaccess dosyasına eklenecek bir yönlendirme kuralı tüm HTTP trafiğini 301 ile HTTPS’e taşır. Ayrıca HSTS (HTTP Strict Transport Security) başlığı ekleyerek tarayıcıya “bu siteye bir daha asla HTTP ile bağlanma” talimatını verebilir, karışık içerik ihtimalini kökten azaltabilirsiniz.
Sıkça Sorulan Sorular
Mixed content hatası SEO’yu etkiler mi?
Evet, dolaylı olarak etkiler. Arama motorları HTTPS’i bir sıralama sinyali olarak değerlendirir ve karışık içerik, sayfanızın tam anlamıyla güvenli sayılmasını engeller. Ayrıca bloklanan script veya CSS yüzünden bozulan bir sayfa, kullanıcı deneyimini ve dolaylı olarak sıralamayı olumsuz etkiler.
Kilit ikonu neden hâlâ tam güvenli görünmüyor?
Sayfada en az bir pasif karışık içerik (genellikle HTTP üzerinden yüklenen bir görsel) kaldığı için tarayıcı kilidi “tam güvenli” olarak göstermez. Konsolu açıp kalan http:// bağlantısını bulup düzelttiğinizde kilit normale döner.
SSL kurdum ama görsellerim kayboldu, neden?
Çünkü modern tarayıcılar HTTP ile yüklenmeye çalışan görselleri önce otomatik olarak HTTPS’e yükseltir; görsel HTTPS adresinde yoksa geri dönüş yapmadan yüklemekten vazgeçer. Görsellerin HTTPS üzerinden erişilebilir olduğundan emin olun ve veritabanındaki bağlantıları HTTPS yapın.
upgrade-insecure-requests her sorunu çözer mi?
Hayır. Bu direktif yalnızca kaynak zaten HTTPS üzerinden erişilebiliyorsa işe yarar; tarayıcıya HTTP isteğini HTTPS’e çevirmesini söyler. Eğer bir dış kaynak gerçekten HTTPS desteklemiyorsa direktif işe yaramaz ve o kaynağı değiştirmeniz ya da kaldırmanız gerekir.
WordPress’te SQL ile toplu değiştirme yapabilir miyim?
Yapabilirsiniz ama önerilmez. Doğrudan UPDATE komutu, serileştirilmiş (serialized) verilerdeki uzunluk bilgisini bozarak widget ve tema ayarlarının çökmesine yol açabilir. Bunun yerine WP-CLI’nin search-replace komutunu ya da güvenli bir arama-değiştirme eklentisini kullanın.
Aktif ve pasif karışık içerik arasındaki fark nedir?
Aktif içerik (script, CSS, iframe) sayfanın tamamını değiştirebilecek güçtedir ve tarayıcı tarafından istisnasız engellenir. Pasif içerik (görsel, ses, video) yalnızca kendi alanını etkiler, riski daha düşüktür ve genellikle engellenmek yerine otomatik yükseltilir ya da uyarıyla geçilir.
Cloudflare veya CDN kullanıyorsam nelere dikkat etmeliyim?
Bir CDN veya ters proxy kullanıyorsanız SSL modunun uçtan uca doğru yapılandırıldığından emin olun; “esnek” (flexible) modlar tarayıcı ile edge arasını güvenli görünse de arka planda HTTP kullanarak karışık içerik benzeri sorunlar doğurabilir. Ayrıca her düzeltmeden sonra CDN önbelleğini temizlemeyi unutmayın.
HSTS eklemek zorunda mıyım?
Zorunlu değildir ama şiddetle önerilir. HSTS başlığı, tarayıcıya siteye yalnızca HTTPS ile bağlanmasını söyler ve HTTP yönlendirmesinin es geçildiği durumları bile kapatarak karışık içerik riskini kökten azaltır.
Güvenli bir başlangıç için doğru altyapı
Ücretsiz SSL, LiteSpeed hızı ve 7/24 uzman desteğiyle Alastyr hosting, sitenizi baştan HTTPS ile güvende tutar. Karışık içerik dertleriyle uğraşmadan yayına geçin.





