Alan Adı Sorgula ve Tescil Et Kısa cevap: Herkes için tek bir “en iyi domain…
WordPress .htaccess Dosyası: Varsayılan Kod, Hazır Kurallar ve Çözümler
Hızlı cevap: WordPress .htaccess dosyası, sitenizin kök dizininde (genellikle public_html) bulunan gizli bir Apache yapılandırma dosyasıdır. WordPress bu dosyayı kalıcı bağlantıların (permalink) çalışması için kullanır. Dosya bozulursa iç sayfalar 404 veya 500 hatası verir. Çözüm: dosyayı yedekleyip aşağıdaki varsayılan WordPress .htaccess kodunu yazmak ve Ayarlar > Kalıcı Bağlantılar > Değişiklikleri Kaydet demektir.
.htaccess, Apache ve LiteSpeed web sunucularında dizin bazında ayar yapmayı sağlayan bir dosyadır. WordPress bu dosyayla “güzel” adresleri (firmaniz.com.tr/hakkimizda/ gibi) arka planda index.php‘ye yönlendirir. Ayrıca yönlendirme, güvenlik ve önbellek kuralları da bu dosyaya yazılır.
Bu rehberde varsayılan WordPress .htaccess kodunu, çoklu site (multisite) kodlarını, en çok kullanılan hazır kuralları ve bozulan bir .htaccess dosyasının nasıl düzeltileceğini anlatıyoruz. Kodlar WordPress resmi belgeleriyle uyumludur.
WordPress .htaccess Dosyası Nerede?
.htaccess dosyası, WordPress’in kurulu olduğu ana klasördedir; wp-config.php, wp-admin ve wp-content ile aynı yerde durur. Adı noktayla başladığı için gizli dosyadır:
- Dosya yöneticisinde: Ayarlar bölümünden “gizli dosyaları göster” (show hidden files) seçeneğini açın.
- FileZilla’da: Sunucu menüsünden “Gizli dosyaları göstermeye zorla” seçeneğini işaretleyin.
- Dosya hiç yoksa: WordPress panelinde Ayarlar > Kalıcı Bağlantılar sayfasında Kaydet’e tıklayın; dosya yazılabilir durumdaysa WordPress onu kendisi oluşturur. Oluşmazsa aşağıdaki kodla kendiniz oluşturun.
Not: Nginx sunucular .htaccess dosyasını okumaz; bu kurallar Nginx’te sunucu yapılandırmasına yazılır.
Varsayılan WordPress .htaccess Kodu
Tek bir WordPress sitesi için standart .htaccess içeriği şudur:
# BEGIN WordPress
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]
# END WordPress
# BEGIN WordPress ve # END WordPress satırları arasındaki bölümü WordPress yönetir ve kalıcı bağlantılar her kaydedildiğinde yeniden yazar. Kendi kurallarınızı bu iki satırın dışına (tercihen üstüne) ekleyin; aksi hâlde değişiklikleriniz silinebilir.
WordPress Multisite .htaccess Kodları
Alt klasör (subfolder) ağı
Siteler firmaniz.com.tr/site1/ şeklindeyse:
# BEGIN WordPress Multisite
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
# END WordPress Multisite
Alt alan adı (subdomain) ağı
Siteler site1.firmaniz.com.tr şeklindeyse:
# BEGIN WordPress Multisite
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress Multisite
WordPress 3.5’ten önce kurulmuş eski ağlarda yüklenen dosyalar için ms-files.php kuralı da gerekir; bu kodları resmi belgede bulabilirsiniz.
En Çok Kullanılan Hazır .htaccess Kuralları
Aşağıdaki kuralları # BEGIN WordPress satırının üstüne ekleyin. Her değişiklikten önce dosyanın yedeğini alın.
HTTP’den HTTPS’e yönlendirme
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
Siteniz Cloudflare gibi bir proxy arkasındaysa bu kural yönlendirme döngüsüne yol açabilir. Bu durumda HTTPS yönlendirmesini Cloudflare’deki “Always Use HTTPS” ayarıyla yapın. Önce sitenizde geçerli bir SSL sertifikası olduğundan emin olun.
www’lu adresi www’suz adrese yönlendirme
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
Tek bir sayfayı 301 ile yönlendirme
Redirect 301 /eski-sayfa/ https://firmaniz.com.tr/yeni-sayfa/
Tüm alan adını başka bir adrese yönlendirmek istiyorsanız bunu .htaccess yerine panelden de yapabilirsiniz: alan adını başka bir URL’ye yönlendirme.
Temel güvenlik kuralları
# Dizin listelemeyi kapat Options -Indexes # wp-config.php dosyasını dışarıya kapat <Files wp-config.php> Require all denied </Files> # XML-RPC'yi kapat (Jetpack veya mobil uygulama kullanmıyorsanız) <Files xmlrpc.php> Require all denied </Files>
Require all denied Apache 2.4 sözdizimidir. Jetpack veya WordPress mobil uygulaması kullanıyorsanız xmlrpc.php kuralını eklemeyin.
Tarayıcı önbelleği (hız için)
<IfModule mod_expires.c> ExpiresActive On ExpiresByType image/webp "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" </IfModule>
Önbellek kuralları sitenin tekrar ziyaretlerde daha hızlı açılmasını sağlar. Diğer hız önerileri için WordPress sitenizi hızlandırma ve aşırı CPU kullanımı yazılarımıza bakın.
Yükleme boyutu sınırı hakkında
İnternetteki birçok rehberde önerilen php_value upload_max_filesize 64M satırı yalnızca PHP Apache modülü (mod_php) olarak çalışıyorsa geçerlidir. Günümüzde yaygın olan PHP-FPM kurulumlarında bu satır 500 Internal Server Error hatasına yol açar. Bu ayarı .user.ini dosyasıyla veya hosting panelinden değiştirin.
Bozulan .htaccess Dosyası Nasıl Düzeltilir?
İç sayfalar 404 veriyorsa, site tamamen 500 hatasıyla açılmıyorsa veya bir eklenti kurduktan sonra yönlendirme döngüsü oluştuysa sorun büyük ihtimalle .htaccess dosyasındadır:
- Dosyaya ulaşın: Hosting kontrol panelinin dosya yöneticisinden veya bir FTP/SFTP programıyla (örneğin FileZilla) sitenizin kök dizinine (genellikle public_html) girin. Gizli dosyaları göster seçeneğini açın.
- Yedek alın: Mevcut .htaccess dosyasını bilgisayarınıza indirin veya adını .htaccess_yedek olarak değiştirin.
- Varsayılan kodu yazın: Yeni bir .htaccess dosyası oluşturun ve yukarıdaki temel WordPress kodunu yapıştırıp kaydedin.
- Kalıcı bağlantıları kaydedin: WordPress yönetim panelinde Ayarlar > Kalıcı Bağlantılar sayfasını açın ve hiçbir şeyi değiştirmeden Değişiklikleri Kaydet’e tıklayın.
- Siteyi test edin: Ana sayfayı ve birkaç iç sayfayı açın. Sorun düzeldiyse eklentilerin eklediği özel kuralları tek tek geri ekleyin.
.htaccess Dosyası Nasıl Oluşturulur?
Bazı bilgisayarlar adı noktayla başlayan dosya oluşturmaya izin vermez. Bu durumda bilgisayarınızda htaccess.txt adlı bir dosya oluşturun, kodu yapıştırıp kaydedin, FTP ile sitenin kök dizinine yükleyin ve sunucuda adını .htaccess olarak değiştirin. Dosya izni genellikle 644 olmalıdır.
.htaccess ve sunucu ayarlarıyla uğraşmak istemiyor musunuz? ASO Web yönetilen hosting paketlerinde WordPress kurulumu, güvenlik ayarları, ücretsiz SSL ve önbellek yapılandırmasını biz yapıyoruz. Alan adınız yoksa buradan sorgulayabilirsiniz.
Aşağıdaki videoda WordPress .htaccess dosyasının nasıl düzenlendiğini izleyebilirsiniz.
Sıkça Sorulan Sorular
WordPress .htaccess dosyası nerede bulunur?
WordPress’in kurulu olduğu ana klasörde (genellikle public_html), wp-config.php ile aynı yerdedir. Adı noktayla başladığı için dosya yöneticisinde veya FTP programında gizli dosyaları göster seçeneğini açmanız gerekir.
WordPress .htaccess dosyası yoksa ne yapmalıyım?
WordPress panelinde Ayarlar > Kalıcı Bağlantılar sayfasında Değişiklikleri Kaydet’e tıklayın. Dosya oluşmazsa varsayılan WordPress .htaccess kodunu içeren yeni bir .htaccess dosyasını kök dizine kendiniz yükleyin.
.htaccess değiştirdikten sonra 500 hatası alıyorum, ne yapmalıyım?
Dosyadaki son değişikliği geri alın veya dosyanın adını değiştirip varsayılan WordPress koduyla yeniden oluşturun. PHP-FPM kullanan sunucularda php_value satırları 500 hatasına yol açar.
.htaccess’e eklediğim kurallar neden siliniyor?
WordPress, # BEGIN WordPress ve # END WordPress satırları arasındaki bölümü kalıcı bağlantılar kaydedildiğinde yeniden yazar. Kendi kurallarınızı bu bölümün dışına ekleyin.
Nginx sunucuda .htaccess çalışır mı?
Hayır. .htaccess dosyası Apache ve LiteSpeed sunucularda çalışır. Nginx’te yönlendirme ve güvenlik kuralları sunucu yapılandırma dosyasına yazılır.
.htaccess ile HTTP’den HTTPS’e nasıl yönlendirilir?
RewriteCond %{HTTPS} off koşulu ve https adresine 301 yönlendiren bir RewriteRule satırı # BEGIN WordPress satırının üstüne eklenir. Site Cloudflare arkasındaysa döngüyü önlemek için yönlendirmeyi Cloudflare’in Always Use HTTPS ayarıyla yapın.
