Bilgi Bankası Profitserver hizmetiyle çalışmak için basit talimatlar
Ana Bilgi Bankası .htaccess dosyasını yapılandırma

.htaccess dosyasını yapılandırma


Bu makalede, SEO'yu geliştirmek için çok önemli olan .htaccess dosyasını kullanmanın temel prensiplerini inceleyeceğiz. Bu dosya, arama motorları tarafından sayfaların düzgün bir şekilde dizine eklenmesini sağlar. Yönlendirmeleri nasıl yöneteceğimizi, güvenliği nasıl yapılandıracağımızı ve performansı nasıl artıracağımızı öğreneceğiz. Ayrıca, bu dosyanın bağımsız olarak nasıl yapılandırılacağına dair ipuçları vereceğiz.

.htaccess Neden Gereklidir?

.htaccess dosyası, Apache sunucularındaki web geliştiricileri için bir tür "uzaktan kontrol" görevi görür. Çeşitli parametreleri ayarlamak ve bir web sitesinin davranışını yönetmek için kullanışlı araçlar sunar. Sunucunun ana yapılandırma dosyalarına doğrudan erişim olmadığında (örneğin, sanal barındırmada sıklıkla olduğu gibi), .htaccess gerekli değişiklikleri yapmak için kullanışlı bir araç haline gelir.

.htaccess dosyası genellikle sitenizin kök klasöründe veya özel yapılandırmanın gerekli olduğu klasörlerde bulunur. Örneğin, WordPress kullanıyorsanız, yapılandırma robots.txt dosyasını yapılandırma başlıklı makalede ele aldığımız Yoast SEO eklentisi aracılığıyla yapılabilir . Diğer durumlarda, gerekli klasöre gidip mevcut .htaccess dosyasını düzenlemek veya henüz oluşturulmamışsa oluşturmak yeterlidir.

.htaccess Dosyasını Yapılandırma

301 Yönlendirme htaccess

.htaccess dosyasındaki 301 yönlendirmesi, bir web sitesindeki kalıcı bir yönlendirmeye benzetilebilir. Arama motorlarına ve tarayıcılara sayfanın artık kalıcı olarak yeni bir adreste bulunduğunu bildirir ve yer imlerini ve dizinlemeyi güncellemeyi önerir. Bu tür yönlendirmeler genellikle bir sayfa taşındığında veya silindiğinde arama sonuçlarındaki sıralamasını korumak ve ziyaretçileri yeni konuma yönlendirmek için kullanılır.

Yönlendirmeleri etkinleştirmek için .htaccess dosyasında ilgili komutu etkinleştirmeniz gerekir:

RewriteEngine on

Bundan sonra en basit yönlendirme biçimini yapılandırabilirsiniz:

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>

RedirectPermanent yönergesini kullanan benzer bir yönlendirme şu şekilde görünür:

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>

Bunlar, yapılandırması en kolay yönlendirme yöntemleridir. Şimdi, mod_rewrite modülü ile diğer, daha gelişmiş yönlendirme türlerini kullanan bir yapılandırmayı ele alalım :

<IfModule mod_rewrite.c>
RewriteEngine On
    
# Redirecting from one page to another
RewriteRule ^old-page.html$ http://www.example.com/new-page.html [R=301,L]

# Redirecting all traffic from one domain to another
RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
    
# Redirecting from www to non-www (or vice versa)
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

# Redirecting from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# Redirecting from one subdomain to another
RewriteCond %{HTTP_HOST} ^subdomain1.example.com$
RewriteRule ^(.*)$ http://subdomain2.example.com/$1 [R=301,L]
</IfModule>

Geçici yeniden konumlandırmayı belirten 302 yönlendirmeli .htaccess çok daha az sıklıkla karşılaşılır. İşte böyle bir ayarın bir örneği:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>

Yönerge Hata Belgesi

Bu ayar, sitenizde HTTP hataları oluştuğunda kullanıcının ne göreceğini kontrol etmenizi sağlar. Standart hata mesajı yerine, ziyaretçi için daha bilgilendirici olacak ve ne olduğunu anlamalarına yardımcı olacak kendi sayfanızı gösterebilirsiniz. Kullanım için şu sözdizimini izlemeniz yeterlidir:

ErrorDocument <error_code> <URL_page>

Örneğin,

ErrorDocument 404 /errors/not_found.html

Bu, 404 hatası oluştuğunda /errors/not_found.html adresindeki sayfanın açılacağı anlamına gelir . Mutlak URL'ler de benzer şekilde belirtilir:

ErrorDocument 500 http://example.com/errors/server_error.html

Bu örnek, 500 hatası durumunda http://example.com/errors/ adresindeki server_error.html sayfasının görüntülenmesini göstermektedir.

Bir Site Dizinine Erişimi Engelleme

.htaccess dosyasında bulunan `Deny from all` komutu , web sunucunuzdaki belirli klasörlere veya dosyalara erişimi engellemeye yardımcı olur. Bu, veri güvenliğini sağlamak için özel bilgileri veya önemli dosyaları site ziyaretçilerinden gizlemek istediğinizde faydalı olabilir.

Listelemeyi (tüm kullanılabilir dizinleri görüntülemeyi) devre dışı bırakmak için şu satırı eklemeniz gerekir:

Options -Indexes

Belirli bir dizine erişimi engellemenin bir örneği şu şekildedir:

<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>

Benzer şekilde, tek bir dosyaya erişimi engelleyebilirsiniz:

<Files "file.php">
Order Deny,Allow
Deny from all
</Files>

Veya uzantıya göre bir dosya aralığı için:

<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>

IP ile Erişimi Engelleme

.htaccess dosyasında IP ile erişimi engellemek, web sitenize belirli IP adresleri veya grupları için erişimi kısıtlamanıza olanak tanıyan bir yöntemdir. Bu, belirli kişiler veya istenmeyen botlar için sitenize veya belirli bölümlerine erişimi engellemek istiyorsanız yararlı olabilir.

Tek bir IP adresini engellemek şu komutla yapılır:

Order Deny,Allow
Allow from all
Deny from 11.22.33.44

Birden fazla IP adresini engellemek, " Deny from " satırını gerekli adreslerle çoğaltarak benzer şekilde yapılır .

Belirli bir IP adresi aralığını engellemek için:

Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24

Yalnızca belirli IP'lere erişime izin vermek için şu kodu ekleyin:

Order Deny,Allow
Deny from all
Allow from 11.22.33.44

Erişimi tamamen engellemek için `Deny from all` yönergesini , adresleri maske ile engellemek için ise `Deny from 11.22` yönergesini kullanın.

Burada 11.22 , IP adresi maskesidir.

Kullanıcı Aracısı ile Ziyaretçileri Engelleme

.htaccess dosyasında User-Agent ile kullanıcıları engellemek, ziyaretçinin kullandığı tarayıcı hakkındaki bilgilere dayanarak web sunucunuza kimlerin erişebileceğini kontrol etme yöntemidir. User-Agent dizesi, bir kişinin sunucunuzla etkileşim kurmak için kullandığı tarayıcı hakkında veri içerir ve bu bilgiler sayesinde belirli kullanıcılar için erişimi kısıtlayabilirsiniz.

User-Agent'a göre engellemenin en yaygın yolu mod_rewrite kullanmaktır :

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3 [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>

Bu örnekte:

  1. RewriteCond %{HTTP_USER_AGENT} User-Agent dizesini kontrol etmek için kullanılır.
  2. ^Bot1, ^Bot2, ^Bot3 engellemek istediğimiz User-Agent dizelerinin örnekleridir. NC değiştiricileri karşılaştırmanın büyük/küçük harfe duyarlı olmaması gerektiğini belirtir.
  3. RewriteRule ^.*$ - [F,L], RewriteCond koşullarından herhangi biri karşılanırsa isteğe uygulanır. 403 Yasak durum koduyla (F) bir yanıt gönderir ve kuralların işlenmesini durdurur (L).

htaccess'te önbelleğe alma

.htaccess dosyası üzerinden önbelleğe almayı yapılandırmak, sitenizin kullanıcılar için daha hızlı yüklenmesini sağlayarak sitenizin hızını artırmaya yardımcı olur. Şöyle çalışır: resimler, CSS stilleri ve JavaScript betikleri gibi belirli dosyalar, ilk yüklemeden sonra kullanıcının tarayıcı önbelleğinde saklanır. Artık tarayıcı, kullanıcı bir sayfayı her ziyaret ettiğinde bunları sunucudan yeniden yüklemek yerine bu dosyaları önbellekten kullanabilir. Bu, yükleme süresini azaltır ve site performansını iyileştirir.

Bir örnek düşünün:

# Enable caching for images for 1 month
<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>

# Enable caching for CSS and JavaScript for 1 week
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>

Sık güncellenen kaynaklar için ise önbelleği devre dışı bırakmak gerekir:

# Excluding caching for HTML pages and XML files
<FilesMatch "\.(html|xml)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>

Site Performansını Optimize Etme

Apache'deki mod_deflate ve mod_gzip modülleri , sunucunun kullanıcı cihazlarına gönderdiği bilgileri sıkıştırmaya yardımcı olur. Bu, dosyaların boyutunu küçültür ve bu da sayfa yükleme hızını artırır. Ancak, bu modüllerin desteği ve yapılandırmasının sunucunuza bağlı olarak değişebileceğini unutmamak önemlidir.

mod_deflate modülünün kullanımına örnek :

<IfModule mod_deflate.c>
# Compressing text file types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
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 application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

mod_gzip için örnek :

<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ # Enabling compression for files with extensions .html, .txt, .css, .js, .php, .pl
mod_gzip_item_include mime ^application/x-javascript.* # Enabling compression for MIME types starting with application/x-javascript
mod_gzip_item_include mime ^text/.* # Enabling compression for MIME types starting with text/
mod_gzip_item_exclude mime ^image/.* # Excluding from compression MIME types starting with image/
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* # Excluding already compressed data (responses with the Content-Encoding: gzip header)
</IfModule>

En sık kullanılan yönergeleri ele aldık. Dosyanın tüm özelliklerini resmi dokümantasyonda inceleyebilirsiniz.

.htaccess Dosyasının İşlevselliği Nasıl Kontrol Edilir

.htaccess dosyanızın sitenizde çalışıp çalışmadığını kontrol etmek için aşağıdaki adımları uygulayabilirsiniz:

  1. .htaccess dosyasını bilerek bir hatayla değiştirin. Yanıt olarak, sunucu bir hata vermelidir. Bu yöntem, dosyanın işleminin genel olarak sunucuya uygulanıp uygulanmadığını gösterir.
  2. Yaptığınız belirli değişikliklerin işlevselliğini kontrol edin. Örneğin, parametrelerden birinde küçük bir ayarlama yapın ve değişikliklerin varlığını değerlendirin.
  3. Değişikliklerin sunucunun yanıtıyla ilgili olup olmadığını sayfanın durum kodunu kontrol edin. Bunu nasıl yapacağınızı daha önce makalede açıklamıştık HTTP Hata Kodları: sunucu hatalarının tam listesi.
  4. Sunucu günlüklerine bakın. .htaccess dosyasının çalışmasıyla ilgili tüm hataları görüntülerler.
  5. Çevrimiçi hizmetleri veya araçları kullanarak test yapın.

.htaccess dosyasının işlevselliğini kontrol etmek için tüm adımları aynı anda gerçekleştirmeniz gerekmediğini anlamak önemlidir. Listeden en uygun yöntemi seçip kullanmanız yeterlidir.

Sonuç

.htaccess dosyasını yapılandırmak, Apache sunucunuzu optimize etme ve korumada önemli bir adımdır. Bu dosyanın yönlendirmeleri yönetmeye, içeriği sıkıştırmaya ve güvenliği sağlamaya nasıl yardımcı olduğunu inceledik. .htaccess ile çalışmada ustalaştığınızda, web sitelerinin performansını ve işlevselliğini iyileştirmek için güçlü bir araç elde edersiniz.

❮ Önceki makale Linux'ta bir web sunucusu (Apache-PHP-MySQL/MariaDB) nasıl yapılandırılır
Sonraki makale ❯ FTP sunucusu kurulumu

VPS hakkında bize sorun

Sorularınızı günün veya gecenin herhangi bir saatinde cevaplamak için her zaman hazırız.