WordPress Htaccess Ayarları
WordPress htaccess ayarları, web sitenizin performansını, güvenliğini ve SEO başarısını doğrudan etkileyen kritik yapılandırmalardan biridir. .htaccess dosyası, Apache web sunucusunda çalışan WordPress sitelerinin davranışını kontrol eden güçlü bir araçtır ve doğru yapılandırıldığında site hızınızı artırabilir, güvenlik açıklarını kapatabilir ve arama motoru optimizasyonunuzu iyileştirebilir. Ancak yanlış bir kod eklemeniz veya syntax hatası yapmanız, sitenizin tamamen çalışmaz hale gelmesine yol açabilir. Bu nedenle, .htaccess düzenlemeleri yapmadan önce mutlaka yedek almak ve her değişikliği dikkatlice test etmek zorunludur.
Binlerce WordPress sitesinde karşılaşılan performans sorunlarının büyük bir kısmı, htaccess dosyasının doğru optimize edilmemesinden kaynaklanıyor. Browser caching ayarlarının eksik olması, GZIP sıkıştırmasının aktif olmaması veya gereksiz yönlendirme kurallarının bulunması, sayfa yükleme sürenizi ciddi şekilde artırabilir. Google’ın sayfa hızını bir sıralama faktörü olarak kullandığı günümüzde, htaccess optimizasyonu yapmak artık opsiyonel değil, zorunlu bir SEO uygulamasıdır. Ayrıca, güvenlik başlıklarının htaccess üzerinden eklenmesi, sitenizi hacker saldırılarına ve zararlı yazılımlara karşı korumanın en etkili yöntemlerinden biridir.
WordPress yöneticilerinin çoğu, .htaccess dosyasının varlığından haberdar olsa da, ne işe yaradığını ve nasıl düzenlenmesi gerektiğini tam olarak bilmiyor. Bu dosya, sunucu seviyesinde çalıştığı için PHP veya WordPress kodlarından bağımsız olarak işlem yapar ve bu da son derece hızlı ve verimli sonuçlar sağlar. Permalink yapısı, 301 yönlendirmeler, güvenlik kuralları, performans optimizasyonları ve daha birçok kritik ayar bu dosya üzerinden yönetilir. Profesyonel bir WordPress sitesi için htaccess yapılandırmasına hakim olmak, teknik altyapınızı güçlendirmenin temel adımlarından biridir.
WordPress Htaccess Dosyası: Temel Bilgiler ve Konumu
.htaccess dosyası, WordPress kurulumunun kök dizininde bulunan gizli bir yapılandırma dosyasıdır ve Apache web sunucularında directory-level yapılandırma yapmaya olanak tanır. FTP veya cPanel File Manager üzerinden erişebileceğiniz bu dosya, varsayılan olarak WordPress permalinkleri aktifleştirildiğinde otomatik olarak oluşturulur. Dosya adının başındaki nokta (.), Unix tabanlı sistemlerde gizli dosya anlamına gelir ve bu yüzden FTP istemcinizde “gizli dosyaları göster” seçeneğini aktifleştirmeniz gerekir. WordPress root dizini genellikle public_html, www veya htdocs klasörüdür.
Dosyaya erişmek için FileZilla, WinSCP veya Cyberduck gibi bir FTP istemcisi kullanabilir ya da hosting kontrol panelinizden (cPanel, Plesk, DirectAdmin) File Manager aracılığıyla doğrudan düzenleyebilirsiniz. Dosyayı indirdikten sonra, Notepad++, Sublime Text veya Visual Studio Code gibi bir metin editöründe açmanız önerilir. Windows Notepad kullanmaktan kaçının çünkü satır sonu karakterlerini yanlış yorumlayabilir ve dosyayı bozabilir. Düzenleme yapmadan önce mutlaka orijinal dosyanın bir kopyasını bilgisayarınıza indirin ve güvenli bir yerde saklayın.
WordPress’in varsayılan .htaccess içeriği oldukça minimalisttir ve temel olarak permalink yapısını yönetir. Standart içerik şu şekildedir:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Bu kod bloğu, WordPress’in pretty permalinks özelliğini aktifleştirir ve tüm istekleri index.php dosyasına yönlendirir. BEGIN WordPress ve END WordPress etiketleri arasındaki kod, WordPress tarafından otomatik olarak yönetilir ve permalink ayarlarınızı her değiştirdiğinizde güncellenir. Bu bölümü manuel olarak düzenlememeniz önerilir; kendi özelleştirmelerinizi bu blokların dışına eklemelisiniz.
Multisite WordPress kurulumlarında .htaccess içeriği farklıdır ve subdirectory veya subdomain yapısına göre değişir. Multisite kurulumlarında dosyayı düzenlerken ekstra dikkatli olmalısınız çünkü yanlış bir yapılandırma tüm network’ü etkileyebilir. Nginx sunucularda .htaccess dosyası çalışmaz; bunun yerine nginx.conf veya site-specific configuration dosyalarını düzenlemeniz gerekir.
Dosya izinleri (permissions) de önemlidir. .htaccess dosyasının izinleri genellikle 644 olarak ayarlanmalıdır (owner read/write, group read, public read). 777 veya 666 gibi çok geniş izinler güvenlik riski oluşturur ve bazı sunucular bu durumda dosyayı çalıştırmayı reddeder. FTP istemcinizde dosyaya sağ tıklayarak “File Permissions” veya “CHMOD” seçeneğinden izinleri kontrol edebilir ve düzenleyebilirsiniz.
Htaccess dosyası yoksa veya silinmişse, WordPress yönetim panelinden “Ayarlar > Kalıcı Bağlantılar”a giderek “Değişiklikleri Kaydet” butonuna tıklayarak dosyanın otomatik oluşturulmasını sağlayabilirsiniz. Eğer dosya oluşturulmazsa, bu genellikle dosya yazma izinlerinin yetersiz olduğu anlamına gelir. Bu durumda FTP üzerinden manuel olarak .htaccess dosyası oluşturmalı ve yukarıdaki varsayılan kodu içine yapıştırmalısınız.
WordPress Htaccess Güvenlik Optimizasyonları
Güvenlik, htaccess dosyasının en kritik kullanım alanlarından biridir ve doğru yapılandırmalar sitenizi birçok saldırı türüne karşı koruyabilir. İlk olarak, wp-config.php dosyasına erişimi engellemek zorunludur çünkü bu dosya veritabanı bilgilerinizi içerir. Aşağıdaki kodu .htaccess dosyanıza ekleyerek wp-config.php’ye dışarıdan erişimi tamamen engelleyebilirsiniz:
<files wp-config.php>
order allow,deny
deny from all
</files>
XML-RPC saldırıları, WordPress sitelerinin en sık karşılaştığı güvenlik tehdididir ve brute force attack’ler için kullanılır. XML-RPC’yi kullanmıyorsanız (genellikle Jetpack gibi eklentiler gerektirir), aşağıdaki kodla tamamen engelleyebilirsiniz:
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
Directory browsing’i engellemek, sunucunuzda dizin listeleme yapılmasını önler ve potansiyel saldırganların dosya yapınızı keşfetmesini zorlaştırır. Basit bir satırla bu özelliği kapatabilirsiniz:
Options -Indexes
File injection saldırılarına karşı koruma sağlamak için, şüpheli query string’leri engelleyen kurallar ekleyebilirsiniz:
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
RewriteRule .* - [F]
</IfModule>
wp-admin dizinine IP bazlı erişim kontrolü ekleyerek, sadece belirli IP adreslerinden yönetim paneline giriş yapılmasını sağlayabilirsiniz:
<Files wp-login.php>
order deny,allow
deny from all
allow from 123.456.789.0
</Files>
Kendi IP adresinizi öğrenmek için “what is my ip” araması yapabilir ve 123.456.789.0 kısmını gerçek IP’nizle değiştirebilirsiniz. Dinamik IP kullanıyorsanız bu yöntem sorun yaratabilir; bu durumda VPN veya statik IP tercih edilmelidir.
Hotlinking, başka sitelerin sizin resimlerinizi kendi sitelerinde göstererek bandwidth’inizi tüketmesidir. Aşağıdaki kodla hotlinking’i engelleyebilirsiniz:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yoursite.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|svg)$ - [NC,F,L]
Güvenlik başlıkları eklemek, XSS, clickjacking ve MIME sniffing gibi saldırılara karşı koruma sağlar:
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
PHP execution’ı uploads klasöründe engellemek, backdoor script’lerin çalıştırılmasını önler:
<Directory "/var/www/html/wp-content/uploads/">
<Files *.php>
deny from all
</Files>
</Directory>
WordPress Htaccess Performans ve SEO Optimizasyonları
Browser caching, htaccess üzerinden yapılabilecek en etkili performans optimizasyonudur. Statik dosyaların tarayıcıda ne kadar süre saklanacağını belirleyerek, tekrar ziyaretlerde yükleme süresini dramatik şekilde azaltabilirsiniz:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 2 days"
</IfModule>
GZIP sıkıştırması, dosya boyutlarını %50-70 oranında azaltarak sayfa yükleme hızını önemli ölçüde artırır:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
301 yönlendirmeler, SEO açısından kritik öneme sahiptir ve htaccess üzerinden kolayca yönetilebilir. Eski URL’lerden yeni URL’lere kalıcı yönlendirme yapmak için:
Redirect 301 /old-page.html https://www.yoursite.com/new-page/
Redirect 301 /old-category/ https://www.yoursite.com/new-category/
HTTPS yönlendirmesi, SSL sertifikası kurduktan sonra mutlaka yapılmalıdır. Tüm HTTP trafiğini HTTPS’ye yönlendirmek için:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
WWW’li veya WWW’siz versiyona yönlendirme yapmak, duplicate content sorununu önler. WWW olmadan kullanmak için:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Trailing slash ekleme veya kaldırma, URL tutarlılığı için önemlidir:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ https://www.yoursite.com/$1/ [L,R=301]
Keep-Alive bağlantıları, birden fazla dosyanın tek bağlantı üzerinden yüklenmesini sağlayarak latency’yi azaltır:
<IfModule mod_headers.c>
Header set Connection keep-alive
</IfModule>
ETags optimizasyonu, cache validation sürecini iyileştirir:
<IfModule mod_headers.c>
Header unset ETag
</IfModule>
FileETag None
Query string’lerden dosya versiyonlamayı kaldırmak, caching verimliliğini artırabilir:
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [QSA,L]
</IfModule>
Leverage browser caching uyarısını tamamen gidermek için, hem Expires hem Cache-Control başlıklarını birlikte kullanın:
<IfModule mod_headers.c>
<FilesMatch "\.(jpg|jpeg|png|gif|svg|css|js)$">
Header set Cache-Control "max-age=31536000, public"
</FilesMatch>
</IfModule>
Charset encoding belirlemek, özel karakterlerin doğru görüntülenmesini sağlar:
AddDefaultCharset UTF-8
WordPress htaccess ayarları, sitenizin güvenliğini ve performansını maksimize etmenin en etkili yollarından biridir ancak yanlış yapılandırmalar telafisi zor sorunlara yol açabilir. WebAcil olarak, htaccess optimizasyonu, güvenlik sertleştirmesi, performans iyileştirmeleri ve SEO uyumlu yönlendirme yapılandırmaları sunarak sitenizin teknik altyapısını kusursuz hale getiriyoruz. Profesyonel htaccess yapılandırması ile sitenizi hem güvenli hem hızlı hale getirmek için bugün bizimle iletişime geçin ve rakiplerinizin önüne geçin!







Leave a comment