Kısa Cevap: Karma içerik hatası, HTTPS üzerinden yüklenen sayfanda hala 'http://' ile çağrılan kaynaklar (görsel, CSS, JS vb.) olduğu anlamına gelir. Bunu çözmek için veritabanında ve dosyalarda kalan 'http://' URL'leri 'https://' ile değiştirmen,
nginx yapılandırmana `Content-Security-Policy` başlığını ekleyerek tarayıcıya güvensiz istekleri yükseltmesini söylemen ve tarayıcı geliştirici
araçlarını kullanarak sorunlu kaynakları tespit etmen gerekir.
Bu karma içerik hatası durumu, HTTPS'e geçiş yapan herkesin başına gelen klasik bir problem arkadaşım, hiç yalnız değilsin. Ben de defalarca yaşadım ve manuel olarak bulmaya çalışmak gerçekten işkence. Neyse ki birkaç etkili yöntemle bu işi kökten çözebiliriz.
1. Kalan 'http://' Kaynakları Tespit Etme ve Düzeltme
Veritabanında ve dosyalarda güncellediğini düşünmüşsün ama mutlaka bir yerlerde gözden kaçanlar olmuştur. Genellikle tema dosyalarında, eklenti ayarlarında veya içerik içinde elle girilmiş linklerde kalabiliyorlar.
- Veritabanı İçin: Eğer bir CMS kullanıyorsan (wordpress gibi), 'Better Search Replace' gibi eklentilerle tüm veritabanında 'http://seninsiten.com'u 'https://seninsiten.com' ile değiştirebilirsin. Direkt SQL sorgusuyla yapmak istersen, dikkatli olman kaydıyla şu tarz sorgular işine yarayabilir:
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://seninsiten.com', 'https://seninsiten.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://seninsiten.com', 'https://seninsiten.com');
-- Diğer tablolar için de benzerini yapabilirsin.
- Dosyalar İçin: Sunucuna SSH ile bağlanıp sitenin ana dizininde şu komutu çalıştırarak 'http://' içeren dosyaları bulabilirsin:Bu komut, tüm alt dizinlerdeki dosyaları tarar ve sana hangi dosyalarda 'http://' linki geçtiğini gösterir. Bulduğun dosyaları manuel olarak veya bir metin düzenleyiciyle düzenleyebilirsin.
Grep -r 'http://seninsiten.com' .
2. Nginx Üzerinden Güvensiz İstekleri Yükseltme (Content Security Policy)
Bu, bence en etkili ve pratik çözümlerden biri. Nginx yapılandırmana ekleyeceğin bir başlık ile tarayıcıya, 'http://' ile çağrılan tüm kaynakları otomatik olarak 'https://' olarak denemesini söyleyebilirsin. Nginx yapılandırma dosyanın (genellikle `/etc/nginx/sites-available/seninsiten.com` içinde) `server` bloğunun içine şu satırı ekle:
Add_header Content-Security-Policy 'upgrade-insecure-requests;';
Bu ayarı ekledikten sonra Nginx'i yeniden başlatmayı unutma: `sudo systemctl reload nginx`. Bu başlık, tarayıcıya güvensiz (http) kaynakları varsa bunları güvenli (https) olarak yüklemeye çalışmasını söyler. Çoğu durumda birçok karışık içerik sorununu kendiliğinden çözer.
3. Tarayıcı Geliştirici Araçlarını Kullanma
Hangi sayfalarda sorun yaşadığını biliyorsun. O sayfalara git, tarayıcının geliştirici araçlarını aç (genellikle F12 ile), Konsol (Console) sekmesine bak. Orada sana hangi 'http://' URL'lerinin engellendiğini veya karma içerik olarak işaretlendiğini net bir şekilde gösterir. Bu sayede spesifik olarak hangi kaynakları düzeltmen gerektiğini bulabilirsin. Bu adımları uyguladıktan sonra sitenin önbelleğini (CDN, Nginx, tarayıcı) temizlemeyi sakın unutma. Büyük ihtimalle bu adımlar, karma içerik sorunlarının çoğunu çözecektir. Kolay gelsin!