WordPress sitesini statik HTML’e, sitenin yayınlanan sayfalarını olduğu gibi HTML dosyaları olarak dışa aktarıp bir statik sunucuda yayınlayarak çevirirsiniz. Aradaki fark şudur: normal bir WordPress sitesi her ziyarette PHP çalıştırıp veritabanından sayfayı oluşturur, statik bir sitede ise PHP, veritabanı ve yönetim paneli yoktur; yalnızca önceden oluşturulmuş HTML, CSS ve görseller sunulur. Bu da güvenliği büyük ölçüde artırır, çünkü saldırganların hedef aldığı eklenti açıkları, veritabanı ve giriş ekranı ortadan kalkar; ayrıca site daha hızlı açılır. Bir tarayıcı sayfaları çeker, HTML olarak kaydeder ve siz bunları bir CDN’de yayınlarsınız. URL’leri koruyun, formlar ve arama gibi dinamik işlevler için dış servisler kullanın. WPBuildAI siteyi tarar ve içeriği temiz, yayınlanmaya hazır statik dosyalar halinde döndürür.

Statik HTML ne demek

Statik bir site, ziyaretçiye her seferinde aynı, önceden hazırlanmış dosyaları sunar. Normal WordPress’te bir sayfa istendiğinde sunucu PHP’yi çalıştırır, veritabanından içeriği çeker ve HTML’i o an üretir. Statik sitede bu adım yoktur: HTML zaten hazırdır ve sunucu sadece dosyayı gönderir. Sonuç, ziyaretçi için görünüşte aynı sitedir, ama altında çalışan bir program yoktur. Bu basit fark hem hız hem güvenlik açısından belirleyicidir, çünkü her isteğin yaptığı işi neredeyse sıfıra indirir. Web Almanac 2024 (HTTP Archive), WordPress’in her istekte ne kadar iş yaptığını gösterir; statik site bunu ortadan kaldırır.

Neden daha güvenli

Statiğe geçmenin en güçlü gerekçesi güvenliktir. WordPress’e yapılan saldırıların çoğu üç şeyi hedefler: eklenti ve tema açıkları, veritabanı ve yönetim giriş ekranı. Statik bir sitede bunların üçü de yoktur, çünkü çalışan bir kod, sorgulanan bir veritabanı veya giriş yapılan bir panel kalmaz. Saldırı yüzeyi, korunması gereken alan, büyük ölçüde küçülür. Bu, hacklenmiş bir siteyi kurtarmak zorunda kalmaktan çok daha rahat bir konumdur, hacklenmiş bir siteden veri kurtarma yazısındaki durumun tersi. Güncellenmeyen bir eklentinin açığından girilemez, çünkü yayınlanan tarafta eklenti çalışmaz.

Siteyi statik olarak dışa aktarma

Statiğe çevirmenin kalbi, yayınlanan sayfaları HTML olarak dışa aktarmaktır. Bir tarayıcı sitenin tamamını gezer, bağlantıları izler, her sayfayı indirir ve HTML’i, CSS’i ve görselleri dosya olarak kaydeder. API açıksa, içeriği WordPress REST API üzerinden de alabilirsiniz. Amaç, ziyaretçinin gördüğü her şeyin statik bir kopyasını çıkarmaktır. Bu işlem sunucuyu yormaz, çünkü sadece okuma yapar; ağır bir dışa aktarma süreci başlatmaz. Çıktı, sitenin tamamını yansıtan bir HTML, görsel ve adres setidir, doğrudan yayınlanmaya hazırdır.

Nerede yayınlanır

Statik dosyalar bir statik barındırma servisinde ya da CDN’de yayınlanır. Burada sunucunun tek işi dosyayı göndermektir, bu yüzden barındırma hem ucuz hem hızlıdır ve ölçeklenmesi kolaydır. Sayfalar kullanıcının yakınındaki bir uçtan sunulduğu için açılış süresi kısalır, ve hız Core Web Vitals’a girer, web.dev üzerinde anlatıldığı gibi. Ayrıca bakımı azdır: güncellenecek bir PHP sürümü, yamalanacak bir eklenti yoktur. İçeriği değiştirmek istediğinizde, kaynağı düzenler ve siteyi yeniden dışa aktarıp yayınlarsınız.

URL’leri koruyun

Site zaten yayında ve indekslenmişse, statiğe geçerken URL’leri korumak önemlidir. Statik dosyaları, sayfalar eski adreslerinde kalacak şekilde düzenleyin, böylece indekslenmiş sayfalar yerinden oynamaz. Adresi değişen her sayfa için 301 yönlendirmesi koyun, tek adımda, Google’ın adres değişikliğiyle taşıma rehberindeki gibi. Statiğe geçiş çoğu zaman içeriği aynı tutar, sadece sunuluş biçimini değiştirir, dolayısıyla URL’leri korumak genellikle kolaydır. Yine de geçişten sonra eski adreslerin yanıt verdiğini kontrol edin, çünkü görünmez bir 404 sessizce sıralama kaybettirir.

Dinamik işlevler ne olur

Dürüst sınır şudur: statik bir site kod çalıştırmaz, dolayısıyla WordPress’in dinamik işlevleri kendiliğinden gelmez. Formlar, arama, yorumlar ve üyelik alanı statik dosyalarla çalışmaz ve bunların bir karşılığı gerekir. Çözüm, her birini bir dış servise vermektir: form için bir form servisi, arama için bir arama servisi, yorum için bir yorum servisi. Bunlar siteye küçük parçalar olarak eklenir ve işlevi geri kazandırır. Bu yüzden statiğe geçmeden önce sitedeki dinamik parçaları listeleyin; her biri bilinçli bir karar olsun, geçişten sonra bir sürpriz değil.

Adım adım

  1. Tüm sayfaların listesini ve dinamik parçaların envanterini çıkarın.
  2. Siteyi statik olarak dışa aktarın: HTML, CSS, görseller.
  3. Bir statik barındırma ya da CDN seçin ve dosyaları yükleyin.
  4. URL’leri koruyun, değişenler için 301 koyun.
  5. Dinamik işlevleri bağlayın: form, arama, yorum için dış servisler.
  6. Site haritasını gönderin ve eski adreslerin yanıtını kontrol edin.

Örnek: bir blogu statiğe çevirmek

Diyelim ki sık saldırı denemesi alan bir WordPress blogu statiğe çevriliyor. Önce 200 sayfanın listesi ve dinamik parçalar (bir iletişim formu, bir arama kutusu) çıkarılır. Site statik olarak dışa aktarılır: her yazı HTML olarak, görselleriyle birlikte kaydedilir. Dosyalar bir CDN’e yüklenir, ve sayfalar eski adreslerinde kalır, böylece yönlendirme neredeyse hiç gerekmez. İletişim formu bir form servisine, arama bir arama servisine bağlanır. Yayınlanan tarafta artık PHP, veritabanı ve panel olmadığı için saldırı denemeleri hedefsiz kalır. Blog aynı görünür, daha hızlı açılır ve bakımı azalır.

Sık yapılan hatalar

  • Dinamik işlevleri listelemeden geçip formların ve aramanın çalışmadığını sonradan görmek.
  • Sayfa listesini eksik çıkarıp statik sitede sayfa atlamak.
  • Adresi değişen sayfalar için 301 koymamak ve 404 üretmek.
  • Görselleri dışa aktarmayı unutup statik sayfalarda kırık resim bırakmak.
  • Kaynağı düzenleyip siteyi yeniden dışa aktarmayı atlayarak içeriği güncel tutmamak.

Aklınızda kalsın

WordPress sitesini statik HTML’e, yayınlanan sayfaları HTML dosyaları olarak dışa aktarıp bir statik sunucuda ya da CDN’de yayınlayarak çevirirsiniz. Statik sitede PHP, veritabanı ve panel olmadığı için hem saldırı yüzeyi büyük ölçüde küçülür hem de site daha hızlı açılır. URL’leri koruyun, değişenler için 301 koyun ve formlar, arama, yorum gibi dinamik işlevleri dış servislere bağlayın. Geçmeden önce dinamik parçaları listeleyin ki hiçbiri sürpriz olmasın. WPBuildAI siteyi tarar ve içeriği temiz, yayınlanmaya hazır statik dosyalar halinde döndürür. Ücretsiz bir analiz için sitenizin adresini gönderin.

WordPress, Lovable, Webflow, Shopify, Wix veya Squarespace ile bağlantılı değildir.