.htaccess Dosyası Nedir ve WordPress'te Nasıl Kullanırsınız?

Yayınlanan: 2020-10-27

.htaccess dosyasını daha önce duymuş olabilirsiniz, ancak ne olduğu veya ne yaptığı hakkında hiçbir fikriniz yoktu. Bu yazıda .htaccess dosyasına ışık tutacağız ve onun gizemlerini bir kez ve herkes için açığa çıkaracağız. Bu makalenin sonunda .htaccess dosyasının ne olduğunu, .htaccess dosyasının ne işe yaradığını ve belirli görevleri gerçekleştirmek için .htaccess dosyasını nasıl kullanabileceğinizi anlayacaksınız. Haydi gidelim!

.htaccess Dosyası nedir?

Bir .htaccess dosyasının tam olarak ne olduğuna bakarak başlayalım. 'htaccess', 'köprü metin erişimi' anlamına gelir. Bu ad, dosyanın ilk geliştirildiğinde ne için kullanıldığını açıklar. Kısacası, belirli dosya ve dizinlere kullanıcı erişimini kontrol etmek için kullanıldı. .htaccess sahnede ilk ortaya çıktığından beri işler değişti ve şimdi ayrıntılı olarak inceleyeceğimiz WordPress'te birkaç farklı şekilde kullanılıyor.

.htaccess, Apache Web sunucusunun (Apache, web sunucularında yaygın olarak kullanılan bir yazılımdır) belirli ayarlarını geçersiz kılmak veya web sitenizin nasıl çalıştığını etkileyen çeşitli diğer işlevleri uygulamak için kullanılan bir yapılandırma WordPress çekirdek dosyasıdır. Kalıcı bağlantıları etkinleştirdikten hemen sonra tüm WordPress kurulumlarına dahil edilir ve genellikle kurulumun kök dizininde bulunur. Kurulum dosyalarına FileZilla veya WinSCP gibi bir FTP istemcisi aracılığıyla erişerek görebilir veya düzenleyebilirsiniz.

Not: Gizli dosyaların gösterilmesi için FTP İstemcinizin tercihlerinin değiştirildiğinden emin olun.

Varsayılan olarak, bir WordPress web sitesinin .htaccess dosyasının içeriği, kalıcı bağlantılar etkinleştirildiğinde şöyle görünür:

 # 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

Henüz bilmiyorsanız, satır başındaki “#” bir yorumdur. # BEGIN WordPress ve # END WordPress yorum satırları, daha sonra eklentiler tarafından veya kendiniz tarafından daha fazla kural uygulandığında içeriğin düzenli kalması için kullanılır. .htaccess dosyasına gelecekte yapılacak eklemeler bu satırların dışına yerleştirilmelidir.

.htaccess dosyası çoğunlukla WordPress'te web sitenizdeki kalıcı bağlantıları kontrol etmek için kullanılır. Ayrıca, belirli dosyalara erişimi kontrol etme, güvenlik ve performansı artırma, özel başlıklar gönderme ve daha pek çok başka görev için güçlü bir araç olarak kullanılabilir.

Not: Web sitenizin .htaccess dosyasında yapılan tüm değişikliklerin dikkatli bir şekilde yapılması önemlidir. Bu dosyadaki basit bir yazım hatası bile web sitenizin çökmesine neden olabilir. Bu nedenle, yaptığınız değişikliklerden emin değilseniz, ideal olarak bunları canlı web sitenize uygulamadan önce hazırlama sunucusunda test etmelisiniz.

.htaccess Dosyanızla Yapabilecekleriniz

Şimdi .htaccess dosyasının yardımıyla web sitenizi nasıl daha fazla kontrol edebileceğinizi görelim.

'www' ve 'www olmayan' Arasında Yönlendirme

.htaccess dosyasının yaygın bir kullanımı, "çıplak etki alanınızdan" (www olmayan sürüm) www sürümüne veya tam tersi şekilde kalıcı bir yönlendirme ayarlamaktır.

Devam etmeden önce, doğru sunucunun IP adresine çözümlemek için her iki etki alanının da DNS'nizde ayarlandığından emin olun.

Ayrıca, WordPress yönetici alanınızda çıplak alan adının birincil olarak ayarlanıp ayarlanmadığını kontrol edin.

ayarlar sitesi URL'si

Varsayılan içeriğin altındaki .htaccess dosyasına aşağıdaki kodu ekleyerek www alan adını çıplak alana yönlendirebilirsiniz.

 RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.mycompanyname\.com [NC] RewriteRule ^(.*)$ http://mycompanyname.com/$1 [L,R=301]

Tam tersini gerçekleştirmek için (www birincil olarak ayarlanmışsa) ve 'www olmayan' bir alan adından 'www' alanına yönlendirme yapmak için şu kodu girmeniz gerekir:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC] RewriteRule ^(.*)$ http://www.mycompanyname.com/$1 [R=301,L]

Kodda kullanılan normal ifadelere aşina değilseniz ve sözdizimi hakkında daha fazla bilgi edinmek istiyorsanız, acele etmeyin ve REGEX hakkında daha fazlasını okuyun. HT Access Cheat Sheet başka bir çok kullanışlı araçtır

301 Yönlendirme (kalıcı yönlendirme)

301 Yönlendirme, arama motorlarına bir URL'nin kalıcı olarak başka bir URL ile değiştirildiğini söyler ve ayrıca bir kullanıcıyı o ziyaretçiye yeni (doğru!) bir URL'ye yönlendirir. .

İşte bir .htaccess dosyasına yerleştirildiğinde hile yapan kod parçası:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.mycompanyname.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301,NC]

Yukarıdaki örnekte, kullanıcıları 'sirketadi.com' web sitesinden 'example.com'a yönlendirdik. Elbette, bu bölümleri kendi URL'lerinizle değiştirmek isteyeceksiniz.

Bu, etki alanı altındaki tüm yollar için de geçerli olacaktır. Bu, örneğin benimsirketadi.com/new.html'nin example.com/new.html'ye yönlendirileceği anlamına gelir.

302 Yönlendirme (geçici yönlendirme)

Bir içerik geçici olarak başka bir konuma taşındığında 302 yönlendirmesi kullanılır. Sözdizimi 301'dekiyle aynıdır. Örneğin:

 Redirect 302 /old.html http//www.mycompanyname.com/new.html

Pratik bir bakış açısıyla sonuç tamamen aynıdır, ancak önemli bir fark vardır. 301 yönlendirmesi ile arama motorlarına sayfanın artık yayında olmadığı söylenir ve bunu yapmak arama motorlarını bu sayfayı arama sonuçlarından çıkarmaya teşvik eder. 302 yönlendirmesi durumunda, orijinal URL Google tarafından taranmaya devam edecek, yeni URL yerine dizine eklemeye devam edecektir. Bu nedenle, yalnızca geçici olarak alternatif içeriğe yeniden yönlendirmek istediğinizde yönlendirme için ideal çözümdür.

HTTPS'ye Zorla

Web sitenizi bir SSL sertifikası ile güvence altına almak bu günlerde çok önemlidir. Bunu yapmayan web siteleri artık tarayıcı çubuğunda web sitenize olan güveni sarsabilecek bir uyarı görüntüleyecektir. Ayrıca Google, HTTPS aracılığıyla içerik sunmayan web sitelerini gerçekten cezalandırır ve bu nedenle arama sıralamalarınız zarar görebilir.

Web sitenize bir SSL sertifikası yüklediğinizde bile, kullanıcıların sitenizin HTTPS olmayan sürümünü ziyaret edebileceğini görebilirsiniz. Bunu yaparlarsa, yüklü bir SSL sertifikanız olmasına rağmen tarayıcılarında uyarıyı almaya devam edeceklerdir. Bunun olmasını durdurmak için, tüm trafiği güvenli olmayan HTTP sürümünden güvenli HTTPS sürümüne zorlamanız gerekir. Aşağıdaki kodu ekleyerek .htaccess dosyanızı kullanarak bunu yapmak çok kolaydır:

 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

IP Adreslerini Engelle

Spam trafiği alıyorsanız veya web siteniz belirli IP adreslerinden kötüye kullanım/hack denemelerine maruz kalıyorsa, .htaccess dosyanızdaki aşağıdaki kodu kullanarak o IP adresinden gelen trafiği engelleyerek .htaccess dosyanızı kullanarak işlem yapabilirsiniz.

 Deny from 94.66.58.135

Bir IP adresini başka yollarla nasıl engelleyebileceğinizi öğrenmek istiyorsanız, lütfen bu kılavuzu okuyun.

Görüntü Bağlantısını Engelle

Resim bağlantısı, birinin web sitenizdeki bir resmi kendi resimlerine gömdüğü yerdir. Bu sorunlu olabilir (yalnızca Telif hakkı açısından değil), çünkü sunucunuzun başka birinin web sitesinde görüntü(ler) sunmak için potansiyel olarak fazla mesai yapması gerekeceği anlamına gelir. Birinin resimlerinizi web sitelerine aşağıdaki kodla gömmesini engellemek için .htaccess dosyasını kullanarak bunu durdurabilirsiniz:

 RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ - [F]

'mycompanyname.com'u web sitenizin URL'si ile değiştirmeyi unutmayın!

Bu kod, TÜM web sitelerinin sitenizdeki resimleri bağlantıya bağlamasını engeller. Arama motorlarının görsellere bağlantı vermesini durdurmak istemediğiniz için, bunları manuel olarak beyaz listeye almanız gerekir. Bunu başaran kodun bölümü burada şu kısımdır:

 RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]

Elbette beyaz listeye eklemek istediğiniz diğer web sitelerini de dahil edebilirsiniz. Son olarak, koddaki son satır ( RewriteRule .(jpg|jpeg|png|gif)$ - [F] ) hangi medya türlerinin engellendiğini belirtir.

Eklenti ve Tema Dosyalarını Koruyun

Eklenti ve tema PHP dosyaları bazen onlara kötü amaçlı kod enjekte etmeye çalışan bilgisayar korsanlarının hedefi olabilir. Aşağıdaki kodu kullanarak bu dosyalara erişimi engellemeye yardımcı olması için .htaccess dosyanızı kullanabilirsiniz:

 RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/ RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L] RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/ RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

WordPress Çekirdek Dosyalarını Koruyun

Bazı WordPress çekirdek dosyalarının yönetici olmayan kullanıcılar tarafından erişilemez hale getirilmesi şiddetle tavsiye edilir. Bu, çoğu barındırma sağlayıcısının sizin için hallettiği bir şeydir, ancak durum her zaman böyle değildir. Hassas WordPress dosyalarına erişimi engellemek istiyorsanız, .htaccess dosyanızda aşağıdaki kodu kullanabilirsiniz:

 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule>

Kötü Botların Web Sitenizi Taramasını Önleyin

Botlar, temelde günde milyonlarca web sitesini tarayabilen otomatik web komut dosyalarıdır. Google, web sitelerini taramak için botları kullanır ve devasa arama veritabanlarını güncellemek için bu taramalardan gelen verileri alır. Umarım bir Google botu tamamen zararsızdır! Web sitenizi taramak istemeyebileceğiniz başka botlar da var. Bu 'kötü' botlardan bazıları, gereksiz sunucu bant genişliğini tüketmekten başka bir şey yapmazken, diğerleri aktif olarak web sitenizdeki istismar edilebilir zayıflıkları araştırıyor olabilir. .htaccess dosyanız bu 'kötü' botları engellemek için kullanılabilir.

Bulmanız gereken ilk şey, hangi botları engellemek istediğinizdir? Zaten biliyor olabilirsiniz, ancak bilmiyorsanız, şüpheli olarak kabul edilen kara listeye alınmış botların güncellenmiş listesine göz atabilirsiniz. Listenize sahip olduğunuzda, bunları .htaccess dosyanıza şu şekilde ekleyebilirsiniz:

 #Block bad bods requests SetEnvIfNoCase user-Agent ^FrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Java.* [NC,OR] SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR] SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR] SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR] SetEnvIfNoCase user-Agent ^Zeus [NC]

Değişikliklerinizi kaydettikten sonra, şimdi web sitenizi ziyaret eden listedeki tüm botlar 403 Yasaklı sayfa alacak.

wp-config.php'yi koruyun

Veritabanı erişim kimlik bilgilerini içerdiğinden, genellikle wp-config.php dosyasına erişimi kısıtlamanız önerilir.

Bunu .htaccess aracılığıyla yapmak için aşağıdaki satırları kopyalayıp .htaccess dosyanıza yapıştırmanız yeterlidir:

 <files wp-config.php>order allow,denydeny from all</files>

PHP yürütmesini devre dışı bırak

Saldırı girişimlerinden korunmanın çok etkili bir yolu, PHP'nin gerekmediği belirli dizinlerde yürütülmesini önlemektir. Örneğin, /wp-includes/ ve /wp-content/uploads/ dizinleri, bilgisayar korsanları tarafından sunucuya yetkisiz erişime izin veren (arka kapı dosyaları olarak bilinir) kod yerleştirmek için kullanılan popüler konumlardır. Bu dizinlerde PHP yürütmesini devre dışı bırakmak bu dosyaları silmez, bunun yerine kodlarını yürütmelerini durdurur. Bunu yapmak için .htaccess dosyanıza aşağıdaki kodu ekleyin.

 <Files *.php>deny from all</Files>

Ayrıca, Pressidium dahil birçok barındırma sağlayıcısının, müşterileri için güvenlik seviyelerini artırmak için bu dizinlerde PHP yürütmesini varsayılan olarak devre dışı bıraktığını göreceksiniz.

XML-RPC Erişimini Devre Dışı Bırak

Bir WordPress kurulumunun genellikle tek veya birden fazla IP adresinden gelen bir saldırıyla ilgili binlerce “POST /xmlrpc.php HTTP/1.1” isteği aldığı barındırma şirketlerindeki destek ekipleri tarafından sıklıkla görülen yaygın bir sorundur. Bunun bir çözümü, XML-RPC'yi devre dışı bırakmaktır.

Web siteniz için XML-RPC'yi devre dışı bırakmak için şu kod satırlarını oyur .htaccess dosyasına ekleyin:

 # Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all </Files> # END protect xmlrpc.php

İçeriğinizi mobil uygulamalar veya uzak bağlantılar kullanarak güncelliyorsanız xmlrpc.php'nin gerekli olduğunu belirtmekte fayda var. Bu nedenle, kalıcı olarak devre dışı bırakmayı düşünüyorsanız, işiniz için gerekli olmadığından emin olun.

Dosyaları İndirilmeye Zorlayın

Bir web sitesinden bir dosya (örneğin bir PDF) indirmek istediğinizde, dosyanın bunun yerine tarayıcı penceresinde açılması bir web sitesi kullanıcısı olarak son derece can sıkıcı olabilir. Web sitenizde, kullanıcılarınız için indirilebilir öğeler olarak sağlanan dosyalarınız varsa, .htaccess dosyanızı düzenleyebilir ve belirli dosya türlerinin indirilmesini ve doğrudan tarayıcıdan görüntülenmemesini sağlayan bir kod satırı ekleyebilirsiniz. Aşağıda, kullanıcıların doğrudan indirmesini istediğiniz bazı dosya türleri örnekleriyle birlikte bu kodu göreceksiniz.

 AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4

Özel HTTP Başlıkları Gönder

Gelişmiş kullanıcılar, Apache'nin Header yönergesinden yararlanarak müşteri HTTP başlıklarını gönderebilmek isteyebilir. Bunu yapmak için .htaccess dosyanıza aşağıdaki kodu ekleyin.

 Header add my-custom-header "my custom header value"

Yukarıdaki örnek, Apache'ye sunucuya yapılan her istek için "my-custom-header" adlı bir başlık eklemesini söyler. Bu güncellemeyi uygularsak ve ardından tarayıcımızın araçlarındaki ağ sekmemizi kontrol edersek, aşağıda gösterildiği gibi yanıtını onaylayabiliriz.

özel başlığım

Bu teknik, önbellek ve güvenlik üstbilgileri eklemek veya bir dil karakter kümesi eklemek için çok yaygındır. Bazı popüler kullanımlar için bu makaleye bir göz atın. Ayrıca bu listede denemeniz için ayrıntılı bir başlık listesi de bulabilirsiniz.

Çözüm

Umarım bu makale, .htaccess dosyasıyla elde edilebilecek şeyler hakkında size bazı bilgiler vermiştir. Elbette, bunların birçoğu bir eklenti kullanılarak gerçekleştirilebilir, ancak özellikle bir eklenti beklediğiniz şekilde çalışmazsa, 'başlık altında' tam olarak neler olduğunu anlamak her zaman yardımcı olur. Bir eklentiye güvenmek yerine .htaccess dosyasını nasıl düzenleyeceğinizi öğrenmek, WordPress uzmanlık seviyenizi artırmanıza da yardımcı olur… ve bu her zaman iyi bir şeydir!