İçeriğe geç
Sunucu ve .htaccess

WordPress Varsayılan .htaccess Dosyası: Kod ve Geri Yükleme

WordPress'in kalıcı bağlantılar için yazdığı tam .htaccess kodu, her satırın işlevi ve yazılar 404 verip ana sayfa açılırken dosyayı geri yükleme yolu.

Yayınlandı

WordPress’in varsayılan .htaccess dosyası, /2026/10/yazi-adi/ gibi kalıcı bağlantıların 404 vermek yerine çalışması için yazılımın sitenizin kökündeki .htaccess dosyasına yazdığı kısa RewriteEngine bloğudur. Şöyle görünür:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Bu kurallar, WordPress’in bloğu üretmek için kullandığı koddan gelir ve WordPress’in kendi .htaccess kılavuzuyla uyuşur. WordPress ayrıca # BEGIN WordPress satırının hemen ardından, işaretler arasındaki düzenlemelerin üzerine yazılacağını bildiren üç yorum satırı ekler. Bunlar kuralların çalışmasını değiştirmez.

Alt klasör kurulumunda WordPress, alt klasörün yolunu hem RewriteBase satırına hem de son kurala yazar; örneğin RewriteBase /blog/ ve RewriteRule . /blog/index.php [L]. Çoklu site ağları farklı bir blok kullanır ve WordPress bu dosyayı onlar için otomatik olarak yazmaz.

Önemli noktalar

  • WordPress bu bloğu Apache ve LiteSpeed’de, yazma izni varsa ve şık kalıcı bağlantılar açıksa üretir. Ayarlar > Kalıcı Bağlantılar’ı açmak yeterlidir.
  • Dosya eksik veya bozuksa kalıcı bağlantılar 404 döndürür, ana sayfa ise yüklenmeye devam eder; çünkü ana sayfanın yeniden yazma kurallarına ihtiyacı yoktur.
  • Sizin veya bir eklentinin eklediği her şeyi # BEGIN WordPress satırının üstüne koyun, asla işaretlerin içine koymayın. WordPress dosyayı güncellediğinde aralarındaki her şeyi değiştirir.
Apache'den terminal çıktısı: .htaccess dosyası yokken ana sayfa 200, yazı URL'si 404 döndürüyor; varsayılan blokla ikisi de 200 döndürüyor
Apache 2.4.58’den gerçek yanıtlar. Dosya yokken ana sayfa açılıyor, yazı URL’si 404 döndürüyor. Varsayılan blokla ikisi de 200 döndürüyor. WordPress’in yerine tek satırlık bir test index.php dosyası kullanıldı.

Her satır ne yapar

RewriteEngine On, bu dizin için Apache’nin mod_rewrite modülünü açar; bu satır olmadan aşağıdaki yeniden yazma kuralları hiçbir şey yapmaz.

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] URL’ye dokunmaz (- bunu ifade eder) ve isteğin Authorization başlığını bir sunucu değişkenine kopyalar. WordPress bu değişkeni okuyarak başlıkta gönderilen kullanıcı adı ve parolayı, örneğin bir uygulama parolasını, alır.

RewriteBase /, Apache’nin yeniden yazılan URL’ler için kullandığı yol önekini belirler. WordPress bunu sitenin bulunduğu yere göre ayarlar, yani bir alt klasör kurulumu RewriteBase /blog/ alır.

RewriteRule ^index\.php$ - [L] bir korumadır: istek zaten index.php ise yeniden yazma durur ve istek değişmeden geçer.

İki RewriteCond satırı asıl mantığı oluşturur. %{REQUEST_FILENAME} !-f ve !-d, “bu istek gerçek bir dosyaya uymuyor VE gerçek bir dizine de uymuyor mu?” diye sorar. Son kuralın çalışması için ikisinin de doğru olması gerekir. Böylece gerçek bir görsel, CSS dosyası veya yüklenmiş bir PDF doğrudan sunulur ve WordPress’in yönlendirmesine hiç uğramaz.

RewriteRule . /index.php [L] kalıcı bağlantıları çalıştıran kuraldır. Bu iki koşulu geçen her şey index.php’ye gönderilir ve URL’nin hangi yazı, sayfa veya arşiv olduğuna WordPress karar verir.

WordPress bu dosyayı ne zaman yeniden oluşturur, ne zaman oluşturmaz

WordPress, Ayarlar > Kalıcı Bağlantılar ekranı her yüklendiğinde yeniden yazma kurallarını temizler. Bu yüzden ekranı açmak yeterlidir, Değişiklikleri Kaydet’e tıklamanız gerekmez. .htaccess eksikse, klasör yazılabilir ve şık kalıcı bağlantılar açık olduğu sürece WordPress dosyayı oluşturur. Dosya varsa ve yazılabilirse WordPress işaretler arasındaki bloğu değiştirir.

Şu durumlarda bu sorunu çözmez:

  • Dosya veya klasörü, PHP’nin çalıştığı kullanıcı için yazılabilir değilse. Ekran, .htaccess dosyasının yazılabilir olmadığını söyleyen bir hata ile yapıştırmanız gereken kuralları gösterir. Bazı barındırmalarda PHP, FTP yüklemelerinizin sahibinden farklı bir sistem kullanıcısı olarak çalışır; bu yüzden FTP istemcisinde doğru görünen izinler yine de WordPress’i engelleyebilir.
  • nginx kullanıyorsanız. WordPress’in nginx kılavuzuna göre nginx’te .htaccess gibi dizin düzeyinde bir yapılandırma dosyası yoktur ve WordPress sunucu yapılandırmasını değiştiremez. Eşdeğer yönlendirme, sunucu yapılandırmasındaki bir try_files yönergesidir ve bunu bir yöneticinin düzenlemesi gerekir.
  • Ana Apache yapılandırmasında sitenizin dizini için AllowOverride değeri None ise. Apache’nin belgeleri şöyle der: “This means .htaccess files are completely ignored unless you explicitly enable them for a directory.” (Yani bir dizin için açıkça etkinleştirmediğiniz sürece .htaccess dosyaları tamamen yok sayılır.) WordPress kusursuz bir dosya yazabilir, yine de hiçbir etkisi olmaz. Yeniden yazma kuralları AllowOverride FileInfo (veya All) gerektirir ve bunu barındırıcınızın değiştirmesi gerekebilir.
  • Kalıcı bağlantılarınız Düz olarak ayarlıysa. Düz URL’ler yeniden yazma kurallarına ihtiyaç duymaz, bu yüzden WordPress onlar için dosyayı oluşturmaz.

Elle nasıl geri yüklenir

Yazılar ve sayfalar 404 verirken ana sayfa hâlâ çalışıyorsa, ilk kontrol edilecek şey eksik veya bozuk bir .htaccess dosyasıdır. İki adımda çözün.

1. Önce tek tıkla çözümü deneyin. wp-admin’de Ayarlar > Kalıcı Bağlantılar’ı açın, ardından hiçbir şeyi değiştirmeden Değişiklikleri Kaydet’e tıklayın. WordPress dosyaya yazabiliyorsa bu işlem dosyayı yeniden oluşturur. Yazamıyorsa ekran hatayı ve gereken kuralları gösterir.

2. Bu çözmezse dosyayı elle oluşturun. FTP/SFTP veya barındırıcınızın dosya yöneticisiyle bağlanın ve sitenizin kök klasörüne gidin; bu normalde wp-admin klasörünü içeren klasördür. .htaccess dosyasının var olup olmadığını kontrol edin. Adı noktayla başladığı için bazı dosya yöneticileri onu varsayılan olarak gizler; “gizli dosyaları göster” seçeneğini açın.

  • Eksikse, tam olarak .htaccess adında yeni bir dosya oluşturun (.txt yok, noktadan önce hiçbir şey yok).
  • WordPress’in size gösterdiği kuralları veya bu kılavuzun başındaki varsayılan bloğu yapıştırın. Alt klasör kurulumunda RewriteBase ve son kuralı buna göre değiştirin.
  • Kaydedin, ardından çalıştığını doğrulamak için bir yazının kalıcı bağlantısını yeniden yükleyin.

Hâlâ 404 alıyorsanız .htaccess yok sayılıyor olabilir. Barındırıcınızla AllowOverride ayarını kontrol edin, çünkü bu ayar kapalıyken Apache doğru bir dosyayı da yok sayar.

Kendi kurallarınız ve WordPress’in bloğu

Bir eklenti veya elle yapılan bir düzenleme yönlendirmeler, hotlink koruması veya önbellek başlıkları gibi kendi kurallarını ekleyebilir. Bunları WordPress’in bloğunun dışında ve üstünde tutun ki bloğun her şeyi yakalayan kuralından önce çalışsınlar:

# Sizin veya bir eklentinin eklediği kurallar: WordPress işaretlerinin ÜSTÜNDE
<FilesMatch "\.(jpg|jpeg|png|gif)$">
    # örnek: hotlink koruması, önbellek kuralları vb.
</FilesMatch>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

# BEGIN WordPress ile # END WordPress arasına konan her şey, WordPress dosyayı bir sonraki güncellediğinde kaybolur ve bunu tetiklemek için Kalıcı Bağlantılar ekranını yüklemek yeterlidir. İşaretlerden önceki ve sonraki satırlar korunur. Özellikle yönlendirmelerin nereye ait olduğunu ve döngülerden nasıl kaçınılacağını öğrenmek için doğru yapılmış WordPress .htaccess yönlendirme kuralları kılavuzuna bakın.

Dosyayı düzenledikten hemen sonra gelen bir 500 Internal Server Error, az önce değiştirdiğiniz şeye işaret eder. Apache’nin belgelerine göre hata günlüğü büyük olasılıkla izin verilmeyen bir yönergeyi veya bir söz dizimi hatasını belirtir. Eski bir eğitimden kopyalanan kurallar buna yol açabilir: mod_access_compat yüklü değilse Order, Apache 2.4’te geçersiz bir komuttur. Siteyi geri getirmek için düzenlemeyi geri alın, ardından hata günlüğünü okuyun.

Varsayılan bloğun ötesinde

Varsayılan blok yalnızca kalıcı bağlantı yönlendirmesini ve Authorization başlığını ele alır. /uploads içinde PHP çalıştırmayı engellemek veya wp-config.php dosyasına doğrudan istekleri reddetmek gibi hassas dosyalara erişimi sıkılaştırmak için gerçekten yardımcı olan WordPress .htaccess güvenlik kuralları kılavuzuna bakın. Kalıcı bağlantılar yanlış yapı, eski kuralları sunan bir önbellek katmanı veya çoklu site alt dizin çakışması gibi başka bir nedenle 404 veriyorsa, çalışmayan WordPress kalıcı bağlantıları kılavuzu diğer nedenleri ele alır.

Sıkça sorulan sorular

WordPress varsayılan .htaccess dosyası nedir? WordPress’in sitenizin kökündeki .htaccess dosyasına # BEGIN WordPress ve # END WordPress arasında yazdığı RewriteEngine bloğudur. Authorization başlığını PHP’ye iletir ve gerçek bir dosya veya klasör olmayan her isteği index.php’ye gönderir.

WordPress’in tam varsayılan .htaccess kodu nedir? RewriteEngine On, Authorization başlığını PHP’ye ileten bir kural, RewriteBase /, index.php için bir geçiş kuralı, isteğin gerçek bir dosya veya klasör olmadığını kontrol eden iki koşul ve diğer her şeyi index.php’ye gönderen son bir kural. Tam blok bu kılavuzun başındadır.

Ana sayfa hariç tüm yazılarım neden 404 veriyor? Apache’de eksik veya bozuk bir .htaccess dosyası bu tabloyu oluşturur. Sunucu ana sayfayı yeniden yazma kuralları olmadan bulabilir. Diğer her kalıcı bağlantının index.php’ye ulaşmak için bu kurallara ihtiyacı vardır; kurallar yoksa Apache var olmayan bir dosyayı arar ve 404 döndürür.

WordPress .htaccess’i otomatik olarak yeniden oluşturur mu? Evet, mod_rewrite bulunan Apache veya LiteSpeed’de, şık kalıcı bağlantılar açıksa ve WordPress oraya yazabiliyorsa. Bunu tetiklemek için Ayarlar > Kalıcı Bağlantılar’ı açmak yeterlidir. Eksik bir dosya için klasörün yazılabilir olması, var olan bir dosya için de dosyanın yazılabilir olması gerekir. Aksi halde ekran bir hata ile elle yapıştırmanız gereken kuralları gösterir.

nginx’te neden bir WordPress .htaccess dosyası yok? nginx’te Apache’nin .htaccess dosyası gibi dizin düzeyinde bir yapılandırma dosyası yoktur. Aynı yönlendirme, nginx sunucu yapılandırmasında bir try_files kuralı olarak yazılır. Bunu bir yöneticinin düzenlemesi gerekir, çünkü WordPress bu yapılandırmayı değiştiremez.

Kalıcı bağlantıları kaydettikten sonra .htaccess’im neden bozuldu? Özel bir kuralın # BEGIN WordPress ve # END WordPress işaretlerinin içine yerleştirilip yerleştirilmediğini kontrol edin. WordPress dosyayı güncellediğinde aralarındaki her şeyi değiştirir, bu yüzden o kural kaybolur. Özel kuralları işaretlerin üstünde tutun.

Kaynaklar


Varsayılan kalıcı bağlantı bloğu ve gerçekten ihtiyacınız olan güvenlik veya yönlendirme kurallarıyla temiz, doğru bir .htaccess dosyasını ücretsiz WordPress .htaccess oluşturucusuyla yeniden oluşturun.

FAQ

Sorular

WordPress varsayılan .htaccess dosyası nedir?

WordPress'in sitenizin kökündeki .htaccess dosyasına # BEGIN WordPress ve # END WordPress arasında yazdığı RewriteEngine bloğudur. Authorization başlığını PHP'ye iletir ve gerçek bir dosya veya klasör olmayan her isteği index.php'ye gönderir.

WordPress'in tam varsayılan .htaccess kodu nedir?

RewriteEngine On, Authorization başlığını PHP'ye ileten bir kural, RewriteBase /, index.php için bir geçiş kuralı, isteğin gerçek bir dosya veya klasör olmadığını kontrol eden iki koşul ve diğer her şeyi index.php'ye gönderen son bir kural. Tam blok bu kılavuzun başındadır.

Ana sayfa hariç tüm yazılarım neden 404 veriyor?

Apache'de eksik veya bozuk bir .htaccess dosyası bu tabloyu oluşturur. Sunucu ana sayfayı yeniden yazma kuralları olmadan bulabilir. Diğer her kalıcı bağlantının index.php'ye ulaşmak için bu kurallara ihtiyacı vardır; kurallar yoksa Apache var olmayan bir dosyayı arar ve 404 döndürür.

WordPress .htaccess'i otomatik olarak yeniden oluşturur mu?

Evet, mod_rewrite bulunan Apache veya LiteSpeed'de, şık kalıcı bağlantılar açıksa ve WordPress oraya yazabiliyorsa. Bunu tetiklemek için Ayarlar > Kalıcı Bağlantılar'ı açmak yeterlidir. Eksik bir dosya için klasörün yazılabilir olması, var olan bir dosya için de dosyanın yazılabilir olması gerekir. Aksi halde ekran bir hata ile elle yapıştırmanız gereken kuralları gösterir.

nginx'te neden bir WordPress .htaccess dosyası yok?

nginx'te Apache'nin .htaccess dosyası gibi dizin düzeyinde bir yapılandırma dosyası yoktur. Aynı yönlendirme, nginx sunucu yapılandırmasında bir try_files kuralı olarak yazılır. Bunu bir yöneticinin düzenlemesi gerekir, çünkü WordPress bu yapılandırmayı değiştiremez.

Kalıcı bağlantıları kaydettikten sonra .htaccess'im neden bozuldu?

Özel bir kuralın # BEGIN WordPress ve # END WordPress işaretlerinin içine yerleştirilip yerleştirilmediğini kontrol edin. WordPress dosyayı güncellediğinde aralarındaki her şeyi değiştirir, bu yüzden o kural kaybolur. Özel kuralları işaretlerin üstünde tutun.