sunucuhataları
teknik çözüm merkezi
Ara Giriş Yap Üye Ol
🏠 Ana Sayfa 📚 Kurulum Rehberleri
Kategoriler
🌐 Web Sunucuları 🐧 İşletim Sistemleri 📦 Sanallaştırma & VPS 🖥️ Kontrol Panelleri 🔒 SSL & Güvenlik 📝 CMS & Uygulamalar 🗄️ Veritabanı 📧 Mail Sunucusu 🗨️ Forum ℹ️ Hakkımızda 📧 İletişim
Giriş Yap Üye Ol
Ana Sayfa SSL & Güvenlik SSL Mixed Content Uyarısı Nasıl Giderilir?
🔒 SSL & Güvenlik

SSL Mixed Content Uyarısı Nasıl Giderilir?

Mixed Content uyarısı, HTTPS sayfanızda HTTP üzerinden yüklenen kaynaklar olduğunda ortaya çıkar. WordPress ve Nginx ile kolayca giderilebilir.

📅 21 Nisan 2025 👁 10 görüntülenme ⏱ 4 dk okuma
𝕏 Paylaş
📋 İçindekiler göster/gizle

Mixed Content Uyarısı Nedir?

Mixed Content (Karma İçerik) uyarısı, HTTPS üzerinden sunulan bir web sayfasının HTTP protokolü üzerinden içerik (resim, CSS, JavaScript, font vb.) yüklemeye çalışması durumunda tarayıcının gösterdiği güvenlik uyarısıdır. Modern tarayıcılar bu durumu potansiyel güvenlik riski olarak değerlendirip içeriği engeller veya uyarı gösterir.

Tarayıcı konsolunda şu mesajları görürsünüz:

Mixed Content: The page at 'https://example.com' was loaded over HTTPS,
but requested an insecure resource 'http://example.com/image.jpg'.
This request has been blocked; the content must be served over HTTPS.

Mixed Content Türleri

Active Mixed Content (Aktif Karma İçerik)

JavaScript dosyaları, CSS dosyaları ve iFrame'ler gibi sayfayı doğrudan etkileyen kaynaklar HTTP üzerinden yüklenirse tarayıcı bunları tamamen engeller. Bu en tehlikeli türdür.

Passive Mixed Content (Pasif Karma İçerik)

Resimler, ses ve video dosyaları gibi kaynaklar HTTP üzerinden yüklenirse tarayıcı uyarı gösterir ama engellemeyebilir. Yine de adres çubuğunda kilit simgesi kaybolur.

Hatanın Tespit Edilmesi

Tarayıcı Geliştirici Araçları

Chrome veya Firefox'ta F12 tuşuna basın → Console sekmesine gidin → "Mixed Content" veya "insecure" içeren uyarıları inceleyin.

Online Araçlar

  • Why No Padlock: https://www.whynopadlock.com
  • SSL Checker: https://www.sslshopper.com/ssl-checker.html
  • JitBit SSL Check: https://www.jitbit.com/sslcheck

Çözüm 1: WordPress İçin Really Simple SSL

WordPress kullanıyorsanız Really Simple SSL eklentisi en kolay çözümdür:

  1. WordPress Yönetim Paneli → Eklentiler → Yeni Ekle
  2. "Really Simple SSL" arayın ve yükleyin
  3. Aktifleştirin → "Evet, HTTPS'i etkinleştir" butonuna tıklayın

Eklenti otomatik olarak tüm HTTP bağlantılarını HTTPS'e yönlendirir.

Çözüm 2: WordPress Veritabanında URL Güncelleme

Veritabanında hâlâ HTTP URL'leri varsa WP-CLI veya Search & Replace eklentisiyle güncelleyin:

# WP-CLI ile URL değiştirme
wp search-replace 'http://example.com' 'https://example.com' --allow-root --dry-run
# Önizleme tamam görünüyorsa --dry-run kaldırın
wp search-replace 'http://example.com' 'https://example.com' --allow-root

wp-config.php dosyasına şunu ekleyin:

define('WP_HOME','https://example.com');
define('WP_SITEURL','https://example.com');

Çözüm 3: .htaccess ile HTTP→HTTPS Yönlendirme (Apache)

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Çözüm 4: Nginx ile HTTPS Zorunluluğu

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;
    
    # Content Security Policy
    add_header Content-Security-Policy "upgrade-insecure-requests;" always;
}

upgrade-insecure-requests direktifi, HTTP kaynakları otomatik olarak HTTPS'e yükseltir.

Çözüm 5: Cloudflare SSL Ayarları

Cloudflare kullanıyorsanız birkaç önemli ayar bulunur:

SSL/TLS Modu

Cloudflare Dashboard → SSL/TLS → Overview bölümünde "Full (Strict)" modunu seçin. "Flexible" mod, Cloudflare ile sunucunuz arasında HTTP kullanarak mixed content sorunlarına yol açabilir.

Always Use HTTPS

Cloudflare Dashboard → SSL/TLS → Edge Certificates → "Always Use HTTPS" seçeneğini aktifleştirin.

Automatic HTTPS Rewrites

Cloudflare Dashboard → SSL/TLS → Edge Certificates → "Automatic HTTPS Rewrites" seçeneğini aktifleştirin. Bu özellik HTTP kaynaklarını otomatik HTTPS'e çevirir.

Çözüm 6: Content Security Policy Başlığı

# Nginx yapılandırması
add_header Content-Security-Policy "upgrade-insecure-requests; default-src https:;" always;

# Apache .htaccess
Header always set Content-Security-Policy "upgrade-insecure-requests; default-src https:;"

Çözüm 7: Harici Kaynakları HTTPS'e Geçirme

HTML kaynak kodunda HTTP referanslarını manuel olarak HTTPS'e değiştirin:

# Yanlış
<img src="http://example.com/logo.png">
<script src="http://cdn.example.com/script.js"></script>

# Doğru
<img src="https://example.com/logo.png">
<script src="https://cdn.example.com/script.js"></script>

# Protokol bağımsız URL (hem HTTP hem HTTPS'te çalışır)
<img src="//example.com/logo.png">

Önleyici Tedbirler

  • Yeni içerik eklerken her zaman HTTPS URL kullanın
  • Harici CDN ve kaynakların HTTPS desteklediğinden emin olun
  • CSP başlığı ile HTTP kaynakları politika düzeyinde engelleyin
  • Düzenli mixed content taraması yapın (Why No Padlock gibi araçlarla)

Özet

Mixed Content sorunu, veritabanındaki ve HTML kodundaki HTTP URL'lerini HTTPS'e çevirmekle çözülür. WordPress için Really Simple SSL eklentisi ve WP-CLI search-replace en pratik yöntemdir. Nginx veya Apache'de HTTPS yönlendirme ve Content-Security-Policy başlığı ekleyerek gelecekte oluşabilecek sorunları da önleyebilirsiniz. Cloudflare kullanıyorsanız "Automatic HTTPS Rewrites" özelliğini mutlaka aktifleştirin.

🤔 Bu kurulumda sorun mu yaşıyorsunuz?

Hata mesajınızı kopyalayıp foruma konu açın. Topluluğumuz size özel durumunuza göre yardımcı olacaktır.

🗨️ Foruma Katıl & Yardım Al

Yorumlar

Henüz yorum yok. İlk yorumu siz yapın!

Yorum Yap

Yorumunuz onaylandıktan sonra yayınlanır.