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 genellikle sitenizin kök klasöründe veya özel yapılandırmanın gerektiği klasörlerde bulunur. Örneğin, WordPress kullanıyorsanız, yapılandırma makalede ele aldığımız Yoast SEO eklentisi aracılığıyla yapılabilir. Robots.txt'yi yapılandırmaDiğ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>

Benzer bir yönlendirme şu şekilde yapılır: YönlendirmeKalıcı yönerge şu şekilde görünüyor:

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

Bunlar yapılandırılması en kolay yönlendirme yöntemleridir. Diğer, daha gelişmiş yönlendirme türlerini kullanan bir yapılandırmayı ele alalım. mod_rewrite modülü:

<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

Anlamı şu ki, bir 404 hata oluşursa, sayfa /hatalar/bulunamadı.html açılacaktır. Mutlak URL'ler benzer şekilde belirtilir:

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

Bu örnek, şunun görüntülenmesini gösterir: sunucu_hatası.html sayfada http://example.com/errors/ durumunda 500 hata.

Bir Site Dizinine Erişimi Engelleme

.htaccess dosyasında şu komut var tüm verme, web sunucunuzdaki belirli klasörlere veya dosyalara erişimi engellemeye yardımcı olur. Bu, veri güvenliğini sağlamak için site ziyaretçilerinden özel bilgileri veya önemli dosyaları gizlemek istiyorsanız yararlı 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

Birkaç IP adresinin engellenmesi, "Reddet" satırını gerekli adreslerle doldurun.

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şimin tamamen engellenmesi için şu yönergeyi kullanın: tüm vermeve adresleri maskeyle engellemek için şunu belirtin: 11.22 Reddet.

Nerede, 11.22 IP adresidir maske.

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.

Kullanıcı Aracısı ile engellemenin en yaygın yolu, mod_rewrite:

<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

MKS mod_deflate ve mod_gzip Apache'deki modüller, sunucunun kullanıcıların 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üklemesini hızlandırır. Ancak, bu modüllerin desteğinin ve yapılandırmasının sunucunuza bağlı olarak değişebileceğini unutmamak önemlidir.

Örnek kullanımı mod_deflate modülü:

<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>

Örnek mod_gzip:

<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 tartıştık. Dosyanın tüm yeteneklerine aşağıdaki şekilde aşina olabilirsiniz: resmi belgeler.

.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 FTP sunucusu kurulumu
Sonraki makale ❯ Linux'ta bir web sunucusu (Apache-PHP-MySQL/MariaDB) nasıl yapılandırılır

VPS hakkında bize sorun

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