WordPress sitenizi yeni bir barındırma hesabına ya da yeni bir alan adına taşımak, kulağa korkutucu gelse de aslında iki parçalı bir iştir: dosyalar (WordPress çekirdeği, wp-content klasörü, wp-config.php) ve veritabanı (yazılar, sayfalar, ayarlar, kullanıcılar). Bu iki parçayı eksiksiz kopyalayıp yeni yerde birbirine doğru bağladığınızda site çalışır. Sorunların neredeyse hepsi bu bağlantı sırasında ya da adres değişikliğinde çıkar.

Bu rehber WordPress'e özel adımları anlatır: yeni sunucuya elle veya eklentiyle aktarma, wp-config.php güncelleme, alan adı değişiyorsa adresleri veritabanında güvenle değiştirme, DNS'i değiştirmeden önce test etme ve geçiş sırası. Genel sunucu taşıma mantığı için hosting taşıma rehberine, alan adı değişikliğinin arama motoru tarafı için site taşıma ve SEO rehberine bakabilirsiniz.

Önce taşıma türünü belirleyin

Önce taşıma türünü belirleyin: Aynı alan adı, yeni hosting, Yeni alan adı (ornek.com yerine ornek.net), Alt klasörden köke (ornek.com/site yerine ornek.com), http yerine https

WordPress'in resmî taşıma belgesi iki durumu ayırır: adres aynı kalıyorsa iş çok basittir, adres değişiyorsa veritabanındaki eski adresleri de güncellemeniz gerekir. Hangi durumda olduğunuzu baştan netleştirin:

DurumNe değişiyor?Ek iş
Aynı alan adı, yeni hostingYalnızca sunucuDosya + veritabanı kopyası, gerekirse wp-config.php güncellemesi
Yeni alan adı (ornek.com yerine ornek.net)Sunucu ve/veya adresYukarıdakilere ek olarak veritabanında adres değiştirme
Alt klasörden köke (ornek.com/site yerine ornek.com)AdresAdres değiştirme ve kalıcı bağlantıları yenileme
http yerine httpsAdres şemasıAdres değiştirme; karma içerik kontrolü

Taşımadan önce hazırlık

  • Tam yedek alın: Dosyaların ve veritabanının bir kopyasını bilgisayarınıza indirin. Taşıma bozulursa geri döneceğiniz tek güvenli nokta budur. Ayrıntılar için WordPress yedekleme rehberine bakın.
  • Güncellemeleri önceden yapın: WordPress, tema ve eklentileri eski sunucuda güncelleyin; taşıma sırasında iki sorunu aynı anda çözmek zorunda kalmazsınız.
  • PHP sürümlerini karşılaştırın: Yeni sunucudaki PHP sürümü eskisinden çok farklıysa eski bir eklenti orada hata verebilir. Önce PHP sürümü yükseltme rehberindeki uyumluluk kontrolünü yapın.
  • DNS TTL değerini düşürün: Alan adının DNS kayıtlarındaki TTL'i taşımadan en az bir TTL süresi önce kısaltırsanız geçiş daha hızlı yayılır. Mantığı DNS yayılma süresi ve TTL yazısında anlatılıyor.
  • Veritabanı bilgilerini not edin: Yeni hesapta oluşturacağınız veritabanı adı, kullanıcı adı, şifre ve sunucu adresi (çoğu paylaşımlı hostingde localhost) birazdan wp-config.php dosyasına yazılacak.

Yöntem 1: Eklentiyle taşıma

Yöntem 1: Eklentiyle taşıma: All-in-One WP Migration and Backup, Duplicator, Migrate Guru

Teknik adımlarla uğraşmak istemiyorsanız taşıma eklentileri siteyi tek bir paket hâline getirip yeni kuruluma aktarır ve adres değişikliğini de çoğu zaman kendileri yapar. wordpress.org dizininde bulunan ve yaygın kullanılan örnekler:

Bu eklentilerin ücretsiz sürümlerinde boyut, zamanlama veya özellik sınırları olabilir ve bu sınırlar zamanla değişir. Kurmadan önce eklenti sayfasındaki açıklamayı, "Last updated" (son güncelleme) tarihini ve desteklenen WordPress sürümünü kontrol edin. Hangi eklentiyi kullanırsanız kullanın, işe başlamadan önce ayrı bir tam yedek almayı atlamayın.

Yöntem 2: cPanel ile elle taşıma

Elle taşıma biraz daha uzun sürer ama ne yaptığınızı tam olarak görürsünüz ve büyük sitelerde eklenti sınırlarına takılmazsınız. Adımlar şunlardır:

  • Dosyaları indirin: Eski hostingdeki Dosya Yöneticisi'nde WordPress klasörünü (genellikle public_html) sıkıştırıp indirin ya da FTP/SFTP ile kopyalayın. Gizli dosyaların, özellikle .htaccess dosyasının da geldiğinden emin olun.
  • Veritabanını dışa aktarın: phpMyAdmin'de WordPress veritabanını seçip Export (Dışa aktar) ile .sql dosyası olarak indirin.
  • Yeni hesapta boş veritabanı oluşturun: cPanel'in MySQL veritabanı araçlarıyla yeni bir veritabanı ve kullanıcı oluşturup kullanıcıya bu veritabanında tüm yetkileri verin.
  • Veritabanını içe aktarın: Yeni hesabın phpMyAdmin ekranında boş veritabanını seçip Import (İçe aktar) ile .sql dosyasını yükleyin.
  • Dosyaları yükleyin: Arşivi yeni hesabın web klasörüne yükleyip açın.
  • wp-config.php dosyasını güncelleyin: Veritabanı adı, kullanıcısı veya şifresi değiştiyse aşağıdaki satırları yeni değerlerle düzenleyin.
php
define( 'DB_NAME', 'yeni_veritabani_adi' );
define( 'DB_USER', 'yeni_kullanici' );
define( 'DB_PASSWORD', 'yeni_sifre' );
define( 'DB_HOST', 'localhost' );

Bu dört değerden biri yanlışsa site "Error establishing a database connection" hatası verir; çözüm adımları veritabanı bağlantı hatası yazısında. Diğer sabitler için wp-config.php sabitleri rehberine bakabilirsiniz.

Barındırma sağlayıcınız SSH ve WP-CLI sunuyorsa (panelinizde varsa ya da sağlayıcınıza sorarak öğrenebilirsiniz) veritabanını komut satırından da taşıyabilirsiniz. wp db export komutu wp-config.php içindeki bilgilerle mysqldump çalıştırır, wp db import ise dosyayı mevcut veritabanına yükler; veritabanını kendisi oluşturmaz.

bash
# Eski sunucuda, WordPress klasörünün içinde
wp db export yedek.sql

# Yeni sunucuda, wp-config.php düzenlendikten sonra
wp db import yedek.sql

Alan adı değişiyorsa: adresleri güvenle değiştirin

Adres değiştiğinde dosyaları ve veritabanını taşımak yetmez; veritabanında eski adres yüzlerce yerde durur: yazı içeriklerindeki görsel bağlantıları, menüler, widget'lar, tema ve eklenti ayarları. Bunları değiştirirken yapılan en yaygın hata, phpMyAdmin'de düz bir SQL REPLACE sorgusu çalıştırmaktır.

Düz SQL REPLACE neden siteyi bozar?

Tema ve eklentilerin birçoğu ayarlarını PHP'nin serileştirilmiş (serialized) biçiminde saklar. Bu biçimde her metnin önünde karakter sayısı yazılıdır. WordPress belgesi de bunu açıkça uyarır: bazı temalar ve widget'lar URL'nin uzunluğunu da kaydeder, uzunluk değişince veri bozulur.

text
# Eski değer: 21 karakterlik adres, başında s:21 yazar
s:21:"https://eski-alan.com";

# Düz REPLACE sonrası: adres 23 karakter oldu ama s:21 yazmaya devam ediyor
s:21:"https://yeni-alanim.com";

Uzunluk bilgisi tutmadığı için PHP bu değeri okuyamaz ve ilgili ayar sessizce sıfırlanır; widget'lar kaybolur, tema ayarları varsayılana döner. Bu yüzden serileştirilmiş veriyi anlayan bir araç kullanın:

  • WP-CLI search-replace: Resmî belgeye göre serileştirilmiş veriyi akıllıca işler ve birincil anahtar değerlerini değiştirmez. Önce --dry-run ile hiçbir şeyi kaydetmeden rapor alın.
  • Better Search Replace eklentisi: Yönetim paneline girebiliyorsanız WordPress belgesinin önerdiği seçeneklerden biridir. Önce deneme modunda (dry run) çalıştırın.
  • Elle sorgu: Yalnızca serileştirilmiş veri içermeyen sütunlarda ve ne yaptığınızı biliyorsanız. Belge, düz değiştirme yapacaksanız bunu wp_posts tablosuyla sınırlamanızı söyler.
bash
# 1) Önce deneme: hiçbir şey kaydedilmez, kaç satırın değişeceği raporlanır
wp search-replace 'https://eski-alan.com' 'https://yeni-alan.com' --skip-columns=guid --dry-run

# 2) Rapor beklediğiniz gibiyse aynı komutu --dry-run olmadan çalıştırın
wp search-replace 'https://eski-alan.com' 'https://yeni-alan.com' --skip-columns=guid

Varsayılan olarak komut yalnızca WordPress'in tanıdığı tablolarda çalışır. Bir eklenti aynı önekle kendi tablolarını oluşturduysa --all-tables-with-prefix seçeneğini ekleyebilirsiniz. Adresin http:// ve www içeren varyantlarını da ayrı ayrı deneme modunda aratmayı unutmayın.

Resmî belgede adı geçen bir başka adres güncelleme eklentisi artık wordpress.org dizininde bulunmuyor; kaldırılmış eklentileri başka kaynaklardan indirip kurmayın.

Panele giremiyorsanız: geçici adres sabitleri

Taşımadan sonra yönetim paneli eski adrese yönleniyorsa, WordPress belgesindeki yöntemle wp-config.php dosyasına adresi geçici olarak yazabilirsiniz. Bu sabitler tanımlıyken Settings > General ekranındaki iki adres alanı düzenlenemez hâle gelir.

php
define( 'WP_HOME', 'https://yeni-alan.com' );
define( 'WP_SITEURL', 'https://yeni-alan.com' );

Belgede ayrıca RELOCATE adlı bir sabit anlatılır; ancak aynı belge bu satırı dosyada bırakmanın güvensiz olduğunu, iş bitince mutlaka silinmesi gerektiğini vurgular. Mümkünse WP-CLI veya eklentiyle ilerleyin.

DNS'i değiştirmeden önce test edin

Siteyi yeni sunucuda görmeden DNS'i değiştirmek, sorun çıkarsa ziyaretçilerin bozuk siteyi görmesi demektir. Bunun yerine kendi bilgisayarınızdaki hosts dosyasına geçici bir satır ekleyerek alan adını yalnızca sizin için yeni sunucuya yönlendirin. Windows'ta dosya C:\Windows\System32\drivers\etc\hosts, macOS ve Linux'ta /etc/hosts konumundadır ve yönetici yetkisiyle düzenlenir.

text
# Yeni sunucunun IP adresi, ardından alan adınız
203.0.113.10   ornek.com www.ornek.com

Yeni sunucunun IP adresini barındırma panelinizden öğrenebilirsiniz (yukarıdaki adres yalnızca örnektir). Test bitince satırı silin; yoksa ileride DNS değişse bile bilgisayarınız eski adrese gitmeye devam eder. Bu yöntem hosting taşıma rehberinde de ayrıntılı anlatılıyor.

Test sırasında ana sayfaya, birkaç yazıya, görsellere, iletişim formuna ve yönetim paneline bakın. Ardından Settings > Permalinks ekranını açıp hiçbir şeyi değiştirmeden kaydedin; WordPress kalıcı bağlantı kurallarını yeniden yazar. Elle eklediğiniz yönlendirme kuralları varsa önce .htaccess dosyasını yedekleyin; ayrıntılar .htaccess ve kalıcı bağlantı kuralları yazısında.

Geçiş sırası: kesintiyi en aza indirin

Geçiş sırası: kesintiyi en aza indirin: TTL değerini önceden düşürün., Son aktarım öncesinde sitede içerik değişikliğini durdurun (yeni yazı, yorum onayı, sipariş). Aksi hâlde...
  • 1. TTL değerini önceden düşürün.
  • 2. Son aktarım öncesinde sitede içerik değişikliğini durdurun (yeni yazı, yorum onayı, sipariş). Aksi hâlde eski sunucuda oluşan veriler yeni sunucuya geçmez.
  • 3. Son dosya ve veritabanı kopyasını alıp yeni sunucuya aktarın.
  • 4. hosts dosyasıyla test edin.
  • 5. Alan adının DNS kayıtlarını yeni sunucuya yönlendirin.
  • 6. SSL sertifikasının yeni sunucuda kurulduğunu doğrulayın (Let's Encrypt SSL kurulumu).
  • 7. Eski hesabı DNS tamamen yayılana kadar birkaç gün kapatmayın ve oradaki son yedeği saklayın.

Taşıma sonrası sık görülen sorunlar

BelirtiOlası nedenÇözüm
Error establishing a database connectionwp-config.php içindeki veritabanı bilgileri yanlışDB_NAME, DB_USER, DB_PASSWORD ve DB_HOST değerlerini kontrol edin
Sonsuz yönlendirme (ERR_TOO_MANY_REDIRECTS)siteurl/home adresi, http/https veya www uyumsuzluğuYönlendirme döngüsü rehberi
Görseller eski alan adından yükleniyorVeritabanında eski adres kaldısearch-replace komutunu deneme modunda tekrar çalıştırın
Ana sayfa açılıyor, yazılar 404 veriyorKalıcı bağlantı kuralları veya .htaccess eksikSettings > Permalinks ekranında kaydedin, .htaccess dosyasını kontrol edin
Tarayıcı "güvenli değil" uyarısı, kilit simgesi yokSayfada http ile yüklenen dosyalar varKarma içerik hatası çözümü
"Sitenizde ciddi bir sorun çıktı." ekranıYeni sunucudaki PHP sürümüyle uyumsuz eklentiKritik hata çözümü ve eklenti çakışması rehberi
Yönetim paneline giriş yapılamıyorÇerezler, adres veya https uyumsuzluğuAdmin paneline girilemiyor rehberi

Sık yapılan hatalar

  • Taşımadan önce yedek almamak ve eski hesabı hemen kapatmak.
  • Adres değişikliğini phpMyAdmin'de düz REPLACE sorgusuyla yapmak.
  • guid sütununu da değiştirmek.
  • .htaccess gibi gizli dosyaları kopyalamayı unutmak.
  • hosts dosyasına eklenen test satırını silmeyi unutmak.
  • Zamanlanmış görevlerin yeni sunucuda çalıştığını kontrol etmemek; gerçek cron kullanıyorsanız görevi yeni panelde yeniden tanımlayın (WP-Cron ve gerçek cron ayarı).

Sık Sorulan Sorular

Taşıma sırasında site kapanır mı?

Doğru sırayla yapılırsa kapanmaz. Eski sunucu, DNS yayılana kadar ziyaretçilere hizmet vermeye devam eder; yeni sunucuyu da hosts dosyasıyla önceden test edersiniz. Tek risk, son aktarım ile DNS değişikliği arasında eski sitede oluşan yorum veya siparişlerdir; bu yüzden o aralıkta içerik değişikliğini durdurun.

Eklentiyle mi taşımalıyım, elle mi?

Küçük ve orta boy sitelerde eklenti genellikle yeterlidir ve adres değişikliğini de kendisi yapar. Çok büyük medya klasörü olan sitelerde veya eklenti sınırlarına takıldığınızda elle taşıma daha öngörülebilirdir. İki durumda da önce tam yedek alın.

Sadece Settings > General ekranından adresi değiştirmek yetmez mi?

Yetmez. O ekran yalnızca siteurl ve home ayarlarını değiştirir. Yazı içeriklerindeki görsel bağlantıları ve tema, widget ve eklenti ayarlarındaki eski adresler veritabanında kalır; bunları search-replace ile güncellemeniz gerekir.

Alan adı değişikliği arama sıralamamı etkiler mi?

Eski adreslerden yenilerine kalıcı (301) yönlendirme kurmazsanız etkiler. Yönlendirme planı ve Search Console'daki adres değişikliği aracı site taşıma ve SEO rehberinde anlatılıyor.

WP-CLI kullanamıyorsam ne yapmalıyım?

Yönetim paneline girebiliyorsanız Better Search Replace gibi serileştirilmiş veriyi destekleyen bir eklenti kullanın. Panele giremiyorsanız önce WP_HOME ve WP_SITEURL sabitleriyle girişi açın, ardından eklentiyle devam edin. SSH erişiminiz olup olmadığını barındırma sağlayıcınıza sorabilirsiniz.

Yazılım, eklenti ve hizmet adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen şirketlerle bayilik veya ortaklık ilişkisi bulunduğu anlamına gelmez.

İlgili içerikler: WordPress yedekleme ve geri yükleme · PHP sürümü yükseltme · Admin paneline girilemiyor · Eklenti çakışması ve beyaz ekran · Hosting taşıma rehberi · Site taşıma ve SEO · DNS yayılma süresi ve TTL