.Htaccess Nedir?
Htaccess Nedir? .htaccess (Hypertext Access) Apache Web Sunucularında (Linux Hosting) bulunan sunucu genel ayarlarından bağımsız olarak klasör bazlı değişiklikleri yapmaya imkan veren yapılandırma dosyasıdır. Bu dosya apache sunucularının ek işlevlerini etkinleştirebilir veya devre dışı bırakabilir. Örneğin bir klasöre parola koruması verebilmek, 404 sayfasının yapacaklarını ayarlamak gibi. Bu dosya sayesinde temel işlemler sunucu yeniden başlatılmadan site bazlı yapılabilmektedir.
Öncelikle .htaccess komut dosyasının tam adıdır, bir dosya uzantısı değildir. Yani dosyaadi.htaccess şeklinde bir dosya oluşturamazsınız. Apache Web Server yazılımında çalışır ve her hangi bir dizine yerleştirildiğinde etkili olur. Yerleştirildiği dizinin tamamını, bu dizin içindeki tüm dosyaları ve alt dizinleri etkiler. Bir sitede birden fazla .htaccess dosyası kullanılabilir.
.Htaccess Ne İşe Yarar?
Bu dosya son zamanlarda bilinirliği oldukça artan, önemli ve kullanımı oldukça artmış bir dosyadır. Bunun en büyük sebebi ise SEO yani arama motoru optimizasyonunun öneminin artması ve WordPress sitelerinin yaygınlaşmasıdır. SEO, hız gibi işlemler için gerekli yapılandırmalar direkt bu dosya kullanılarak kolay bir şekilde yapılabilmektedir.
.htaccess Dosyası Nasıl Oluşturulur?
Notepad++ , UltraEdit, Microsoft WordPad ve benzeri herhangi bir iyi metin düzenleyicisini kullanarak bir .htaccess dosyası oluşturabilirsiniz. Microsoft NotePad’i kullanamazsınız bunun sebebi ise Microsoft Notepad’in ASCII desteğinin olmamasıdır. Htaccess PCRE (Perl Uyumlu Düzenli İfadeler) dilinde yazılmıştır.
Aşağıda WordPress kurulumundan sonra oluşan örnek .htaccess dosyasını bulabilirsiniz.
# 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>
.htaccess Dosyası Nerede?
Eğer WordPress kullanıyorsanız .htaccess dosyası sunucunuzun kök dizininde olur. Fakat sunucunuza her hangi bir yükleme yapmadıysanız kök dizinde bu dosya olmayabilir. Normalde gizli modda olan bu dosyanın olup olmadığı öğrenmek için kullandığınız hosting panel yazılımından dosya yöneticisi bölümüne girip, gizli dosyaları göster demeniz gerekmektedir. Bu işlem cPanel kullanıcıları için aşağıdaki şekilde yapılmaktadır.
- Hosting firmanızın vermiş olduğu kullanıcı adı ve şifrenizi kullanarak cPanel giriş yapın
- “Dosya Yöneticisi” ikonuna tıklayarak dosya yöneticisini açın
Cpanel Dosya Yöneticisinde Oturum Açın
3. Dosya yöneticisinde sağ üst köşede bulunan “Ayarlar” ikonuna tıklayınız.
Cpanel Gizli Dosyaları Göstermek için ayarlar ikonunu kullanınız
4. Açılan pencerede “Gizli Dosyaları Göster” kutucuğu işaretli değilse işaretleyiniz.
Gizli Dosyaları Göster kutucuğunu işaretleyiniz
5. .htaccess dosyanız varsa dizin içindeki dosya klasör listesinde görebilirsiniz.
.htaccess dosyanızı dizin içinde bulabilirsiniz
Sunucunuzda .htaccess dosyanız varsa cPanel üzerinden düzenlemesi oldukça kolaydır. cPanel üzerinden dosyanızın içeriğini görmek veya düzenlemek için dosya üzerinde sağ tuşuna basınca açılan menüden “Düzenle” butonuna basmanız durumunda cPanel’in editörü açılacaktır.

Cpanel htaccess Dosyası Düzenleme
Kodlama Kontrolünü Devre Dışı Bırakmanızı tavsiye ediyorum. Bunu yapmamak öncelikle html dosyalarında türkçe karakter sorunları yaratabilmektedir.

Kodlama Kontrolünü Devre Dışı Bırakma
Bu işlemlerden sonra mevcut .htaccess dosyanızın içindeki kodlar karşınıza çıkacaktır. Bu online çalışan bir editördür ve bunu kullanmak basit olduğundan bir çok işinizi fazlasıyla hızlandırabilir. Değişiklikleri yaptıktan sonra kaydet butonuna basarak yaptığınız değişiklikleri aktif edebilirsiniz. Naçizane tavsiyem bu editörde online çalıştığınızı dikkate alarak değişiklik yapmadan önce orjinal dosyanın yedeğini alınız.

Cpanel Editör
cPpanel Kullanarak .htaccess Dosyası Oluşturma
Yukarıdaki işlemleri yaptınız ve sunucuda .htaccess dosyası olmadığını gördünüz. Peki yeni .htaccess dosyasını nasıl oluşturacaksınız. Bunun yine en kolay yolu cPanel ile yeni bir dosya oluşturmaktır.
- Cpanel’den oturum açtıktan sonra dosya yöneticisine tıklıyoruz.
- Açılan sayfada soldaki klasör ağacını kullanarak “public_html” klasörüne tıklayarak bu klasörün içine giriyoruz.
- Sol üst köşedeki “+Dosya” butonuna tıklıyoruz.
- Açılan panelde dosya adı bölümüne .htaccess yazıp “Create new file” butonuna bastığınızda boş .htaccess dosyanızı oluşturabilirsiniz.

Boş .htaccess Dosyası Oluşturma
Bundan sonra bir önceki başlıktaki işlemleri uygulayarak dosyanızı düzenleyebilirsiniz.
.Htaccess dosyanız çalışmıyorsa, hosting şirketinize danışmalı ve hesabınızda .htaccess özelliğini etkinleştirdiklerinden emin olmalısınız. Bazı web barındırma şirketleri bu dosyayı izinsiz kullandırmayabilir.
.htaccess Komutları
En çok kullanılan htaccess komutlarını aşağıda bulabilirsiniz.
.htaccess ile Dizine Göz Atmayı Açma ve Kapama
Sunucu içindeki dizinlerin içeriklerinin gözükmesini istemiyorsanız en kolay yol dizin içine boş bir index.html dosyası oluşturmaktır. Fakat çok fazla klasörünüz varsa ve tek tek uğraşmak istemiyorsanız veya sadece belli dosya uzantılarının listelenmemesini istiyorsanız bu işlemi .htaccess dosyası ile yapabilirsiniz. Örnek bir dizin içindeki sadece .zip uzantılı dosyaların listelenmemesini isteyebilirsiniz.

Dizine Göz Atmayı Kapatma
Tüm dosyalar için dizin listesini kapatmak için;
IndexIgnore *
Sadece tek bir uzantıyı listelemeye kapatmak için (Örnek .zip dosyaları). Bu kod ile dizin içindeki zip dosyaları gizlenirken varsa diğer uzantılardaki dosyalarınız listelenecektir.
IndexIgnore *.zip
Birden fazla dosya uzantısı ile gizlemek için;
IndexIgnore *.zip *.jpg *.gif
Alternatif olarak, sunucunuz dizin listelerine izin vermiyorsa ve bunları etkinleştirmek istiyorsanız aşağıdaki kodu kullanabilirsiniz.
Options +Indexes
.htaccess ile Klasör Yönlendirme

.htaccess ile Klasör Yönlendirme
Bu web sitenizde bir klasörün içeriğini başka bir klasöre taşıdıysanız ve ziyaretçileri eski bağlantılardan yeni içerik konumuna yönlendirmek istiyorsanız kullanabileceğiniz bir yoldur. Aşağıdaki şekilde yapılır.
Redirect /eski_klasor/ http://www.alanadi.com/yeni_klasor/index.html
Yukarıdaki satırda Apache Web Sunucusuna, bir ziyaretçi ‘eski_klasor’ dizininde bulunan bir belge isterse, onu ‘yeni_klasor’ dizininde bulunan ‘index.html’ belgesini göstermesini söyledik. Burada dikkat ettiyseniz eski klasör içindeki herhangi bir belge istediğinde bu işlemi yap dedik. Bunu bir dosya veya komple bir alan adı yönlendirme ile karıştırmamak gerekiyor.
Bu işlem seo açısından sıkıntılı durumlar yapacağından 301 yönlendirmesi yapmak daha faydalı bir yol olacaktır.
.htaccess ile Hata Sayfalarını Değiştirmek (401-404-500)
htaccess ile Hata Sayfalarını Değiştirmek; Bir ziyaretçi sitenizde olmayan bir adresi çağırdığında veya bir sayfanızın adresini değiştirdiğinizde karşısına “404 not found” gibi sunucu tarafından hazır sayfalar çıkmaktadır. Bu sunucu taraflı sayfa yerine sizin özel olarak hazırlamış olduğunuz hata sayfasını ziyaretçiye göstermek isterseniz bunu .htaccess tarafından basit bir şekilde yapabilirsiniz. Örnek: htaccess 404 sayfası bulunamadi.html adında özel bir hata sayfası hazırladığınızı var sayıyorum.
Eğer bu sayfa kök dizinde yer alıyorsa .htaccess dosyanıza eklemeniz gereken kod;
ErrorDocument 404 bulunamadi.html
Eğer bir klasör içinde yer alıyorsa örnek /klasoradi/bulunamadi.html
ErrorDocument 404 /klasoradi/bulunamadi.html
Yukarıdaki örneği dikkate alarak sunucu taraflı diğer hata kod sayfalarını da belirlemek mümkündür. Değiştirmek istediğiniz hata sayfası (.html veya .htm uzantılı) için bir dosya hazırlayıp bu dosyayı sunucunuzda yüklediğiniz yola uygun olarak .htaccess dosyanıza ekleyiniz.
ErrorDocument 401 /klasoradi/401_hata_sayfasi.html ErrorDocument 404 /klasoradi/404_hata_sayfasi.html ErrorDocument 500 /klasoradi/500_hata_sayfasi.html
Bu tarz kişiselleştirilmiş size özgün hata sayfaları hazırlayarak ziyaretçilerinize güven telkin edebilirsiniz. Sitenize SEO açısından katkısı da olacaktır.
htaccess ile Başlangıç Sayfasını Belirleme
Normalde web sitesi dizinlerinde sunucuların ilk olarak okuduğu ve işleme aldığı sayfa index.htm’dir. Bazı zamanlarda veya güvenlik sebebiyle sunucunun ilk olarak başka bir dosyayı okumasını ve işleme almasını isteyebilirsiniz. Örneğin dönemsel bir kampanyanız olabilir. Yada sitenize ilk girişte bir duyuru sayfası eklemekte istemiş olabilirsiniz. Eğer bunu değiştirmek isterseniz .htaccess dosyanıza aşağıdaki kodu eklemeniz yeterli olacaktır. Ben koda basla.html olarak belirttim siz kendinize göre bunu uyarlamalısınız.
DirectoryIndex basla.html
.htaccess ile 301 Yönlendirmesi
En yaygın .htaccess 301 yönlendirme komutlarını aşağıda bulabilirsiniz.
Web sitenizdeki tek bir sayfayı başka bir sayfaya yada başka bir web sitesine yönlendirmek için;
http veya https olarak farklı kaynaklardan hedeflere 301 yönlendirme yapabilirsiniz.
Tüm Web sitesini başka bir web sitesine yönlendirme
Web sitenizin link yapısını bozmadan web sitenizin alan adını değiştirmek için en sık kullanılan ve arama motoru dostu yöntemdir. Eski web sitenizin tüm sayfalarını birebir olacak şekilde yeni web sitenize kalıcı olarak yönlendirir.
Bu yöntemle https://www.eskisiteniz.com/xxx.html ve bunun gibi binlerce alt sayfanız https://www.yenisiteniz.com/xxx.html ve binlerce alt sayfa şeklinde kalıcı yönlenmiş olacaktır.
.htaccess ile Dosya ve Dizinlere Erişimi Engelleme
Sitenizdeki bir dizine erişimi botlara veya istenmeyen backlinkler ile gelen trafiğe göre engelleyebilirsiniz. Bu engellemeyi ip adresi veya yönlendiren site adresi bazında yapabilirsiniz. Bu işlem robotx.txt dosyasını dikkate almayan botlar içinde kullanılabilecek bir yoldur.
Engellemek istediğiniz dizine .htaccess adında bir dosya oluşturup aşağıdaki kodları bu dosyaya ekleyerek bu işlemi gerçekleştirebilirsiniz.
Dizine tüm erişimi kapatmak isterseniz;
deny from all # DİZİNE TÜM ERİŞİMİ KAPATMA
Sadece belli bir IP adresi veya IP bloğundan erişime izin vermek isterseniz aşağıdaki kod ile bu işlemi gerçekleştirebilirsiniz.
deny from all # DİZİNE TÜM ERİŞİMİ KAPATTIK # TEK IP ADRESİNE İZİN VERDİK. İZİN VERİLECEK IP ADRESİNİ AŞAĞIYA YAZMALISINIZ. allow from 192.168.1.10 # IP BLOĞUNA İZİN VERDİK. İZİN VERİLECEK IP BLOĞUNU AŞAĞIYA YAZMALISINIZ. allow from 192.168.1.0/24
Bazı durumlarda klasör içindeki tek bir dosyaya erişimi kapatmak isteyebilirsiniz. Bu durumda aşağıdaki kodu kullanabilirsiniz.
<Files gizli.html> Order allow,deny Deny from all </Files>
htaccess ile Klasöre Parola Koyma
Web sitesinin bir dizinini veya tamamını erişime kapatabilir, sadece kullanıcı adı şifreyi bilen kişilerin buraya erişmesini sağlayabilirsiniz. Bu özellik yetki verilen kullanıcın klasöre erişim bilgilerinin yer aldığı .htpasswd dosyası ile birlikte kullanılır. Bu güvenli dizinler için giriş arayüzü web tarayıcıları tarafından otomatik olarak gerçekleştirilir. Parolalar, oturum açma kimlik bilgilerinin güvende tutulmasını sağlayan en iyi şifreleme yöntemlerinden biri kullanılarak şifrelenir.
Başlamak için, hangi dizini parola ile korumak istediğinize karar verin. Unutmayın bu işlem uygulayacağınız dizin altındaki tüm dosya ve klasörleri kapsayacaktır.
Aşağıdaki metni içeren bir .htaccess dosyası oluşturun (.htaccess dosyası oluşturma)
AuthType Basic AuthName "Password Protected Area" AuthUserFile /path/to/.htpasswd Require valid-user
Burada sadece .htpasswd dosyasının tam yolunu değiştirmeniz gerekmektedir.
Oluşturacağınız .htpasswd dosyasına aşağıdaki kodu ekleyerek parola ile korumak istediğiniz klasöre yükleyiniz.
seocu:$apr1$rFmq0fUC$Pq/X3Qlj1i5qzshMEK8kt1
Bu kod ile oluşturduğumuz kullanacı adı seocu parolası ise 123456 ‘dır. Kendinize uygun şifrelenmiş parola oluşturmak için bu linki kullanabilirsiniz.
Birden fazla kullanıcıya yetki vermek istiyorsanız .htpasswd dosyasının her satırına bir kullanıcı adı ve şifresi olacak şekilde yazabilirsiniz.
Parola korumalı bir dizin ayarlamak sadece üyelere özel bir alan sunmanız aynı zamanda web sitenizi ziyaret edenleri izlemek ve web sitesinde bir topluluk hissi oluşturmak için mükemmel bir yoldur. Ziyaretçilerin içeriğe erişmek için kayıt olmalarını isteyerek, ziyaretçileriniz hakkında bilgi toplayarak bu bilgileri dijital pazarlama stratejinizde kullanabilirsiniz.
Bu işlemin kötü yanı ise çıkış yapma butonu gibi bir seçeneğin olmamasıdır. Kullanıcı tarayıcı kapatıncaya kadar oturum açma bilgileri web tarayıcısında önbelleğe alınır. Tarayıcı kapatılıp tekrar açıldığında, giriş bilgileri önbellekten silinir ve açılır pencere yeniden görüntülenir.
htaccess ile Dosya Türlerinin Belirlenmesi
.htaccess (Hypertext Access) Apache Web Sunucularında (Linux Hosting) bulunan sunucu genel ayarlarından bağımsız olarak klasör bazlı değişiklikleri yapmaya imkan veren yapılandırma dosyasıdır. Bu dosya kullanılarak bazı sunucu bazlı yapılandırmalar kısa yoldan bir siteye, klasöre özgün yapılabilir. Bu işlemlerden bir tanesi .htaccess ile Dosya Türlerinin Belirlenmesi ‘dir.
MIME türleri bir dosyanın ne olduğunu veya hangi dosya uzantılarının hangi dosya türlerine başvurduğunu belirler. Örneğin, ‘.html’ dosya uzantısı HTML belgesine, ‘.zip’ dosya uzantısı ZIP arşiv dosyasına işaret eder. Sunucunun bunu bilmesi gerekir, böylece dosyayla nasıl başa çıkılacağını bilir. Bu genellikle yaygın dosya türleri için özel dosya uzantısı oluşturmak için kullanılır.
Bir MIME türü ayarlamak için, aşağıdaki metni içeren bir .htaccess dosyası oluşturabilirsiniz.
AddType text/html .html .htm
Nokta isteğe bağlıdır ve uzantılarda büyük küçük harf duyarlı değildir.
örneğin Bunun yerine: AddType görüntü / jpeg .jpeg .jpg .jpe .JPG
bunu kullanabilirsiniz: AddType görüntü / jpeg jpeg jpe jpg jpe”
İşte çeşitli MIME türlerinin ve bazı ilişkilerin bir listesi;
AddType text/html .html .htm AddType text/plain .txt AddType text/richtext .rtx AddType text/tab-separated-values .tsv AddType text/x-setext .etx AddType text/x-server-parsed-html .shtml .sht AddType application/macbinhex-40 .hqx AddType application/netalivelink .nel AddType application/netalive .net AddType application/news-message-id AddType application/news-transmission AddType application/octet-stream .bin .exe AddType application/oda .oda AddType application/pdf .pdf AddType application/postscript .ai .eps .ps AddType application/remote-printing AddType application/rtf .rtf AddType application/slate AddType application/zip .zip AddType application/x-mif .mif AddType application/wita AddType application/wordperfect5.1 AddType application/x-csh .csh AddType application/x-dvi .dvi AddType application/x-hdf .hdf AddType application/x-latex .latex AddType application/x-netcdf .nc .cdf AddType application/x-sh .sh AddType application/x-tcl .tcl AddType application/x-tex .tex AddType application/x-texinfo .texinfo .texi AddType application/x-troff .t .tr .roff AddType application/x-troff-man .man AddType application/x-troff-me .me AddType application/x-troff-ms .ms AddType application/x-wais-source .src AddType application/x-bcpio .bcpio AddType application/x-cpio .cpio AddType application/x-gtar .gtar AddType application/x-shar .shar AddType application/x-sv4cpio .sv4cpio AddType application/x-sv4crc .sv4crc AddType application/x-tar .tar AddType application/x-ustar .ustar AddType application/x-director .dcr AddType application/x-director .dir AddType application/x-director .dxr AddType application/x-onlive .sds AddType application/x-httpd-cgi .cgi AddType image/gif .gif .GIF AddType image/ief .ief AddType image/jpeg .jpeg .jpg .jpe .JPG AddType image/tiff .tiff .tif AddType image/x-cmu-raster .ras AddType image/x-portable-anymap .pnm AddType image/x-portable-bitmap .pbm AddType image/x-portable-graymap .pgm AddType image/x-portable-pixmap .ppm AddType image/x-rgb .rgb AddType image/x-xbitmap .xbm AddType image/x-xpixmap .xpm AddType image/x-xwindowdump .xwd AddType audio/basic .au .snd AddType audio/x-aiff .aif .aiff .aifc AddType audio/x-wav .wav AddType audio/x-pn-realaudio .ram AddType audio/x-midi .mid AddType video/mpeg .mpeg .mpg .mpe AddType video/quicktime .qt .mov AddType video/x-msvideo .avi AddType video/x-sgi-movie .movie AddType message/external-body AddType message/news AddType message/partial AddType message/rfc822 AddType multipart/alternative AddType multipart/appledouble AddType multipart/digest AddType multipart/mixed AddType multipart/parallel AddType x-world/x-vrml .wrl
htaccess ile Dosya Türlerinin Belirlenmesi
WWW veya WWW Olmadan Yönlendirme
Kullanıcılar ziyaret ettikleri web sitelerine 2 farklı adres kullanarak erişebilir. Örnek www.seolog.com.tr veya sadece seolog.com.tr şeklinde. 2 farklı şekilde de erişilen site aynıdır ve kullanıcı gözüyle bu pek önemli olmayan bir durumdur. Fakat teknik durumlar devreye girdiğinde bu aslında bir web master veya seo uzmanı için sıkıntılı bir durumdur. Ayrıca arama motorları için karışıklık yaratabildiği için bu durumu onlarda sevmez. Nasıl karışıklıklar olabilir? Arama motorları neden sevmez? Bunları isterseniz yazının sonunda okuyabilirsiniz.
Ayrıca site adresinizde www kullanmalı mısınız yoksa kullanmamalı mısınız? Bu konu hakkındaki yazıyıda okumanızda fayda var. “Olmak (www.seocu.org) yada olmamak (seocu.org) işte bütün mesele bu”
Web sitenizin ftp dizininde bulunan .htaccess dosyasını bir editör yardımı ile (wordpad, notepad+ vb gibi. gelişmiş bir editör ile açabilirsiniz. Klasik notepad ile .htaccess dosyasını düzenleyemezsiniz.) açarak istediğiniz kullanıma uygun kodları eklemeniz gerekmektedir. Ayrıca Cpanel kullanıcıları bu işlemi Cpanel içindeki dosya yöneticisi ile kolaylıkla yapabilir.
!Unutmayın bu işlemlere başlamadan önce .htaccess dosyanızın yedeğini almakta fayda var. Aşağıdaki örnek bizim web site adresimiz ve sitenizde SSL sertifikası olması durumunda kullanabileceğiniz örnektir. Lütfen bunlara dikkate alarak kendi web sitenize göre kodlarda gerekli değişiklikleri yapmayı unutmayın.
.htaccess dosyası yardımı ile site adresinizin www ile başlamasını sağlamak
Sonuç: http://www.seolog.com.tr
RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.seolog\.com.tr RewriteRule (.*) http://www.seolog.com.tr/$1 [R=301,L]
.htaccess dosyası yardımı ile site adresinizin www olmadan başlamasını sağlamak
Sonuç: http://seocu.org
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.seolog\.com.tr$ RewriteRule ^(.*)$ http://seolog.com.tr/$1 [L,R=301]
Yukarıdaki kodlarda kendi site adresimiz yazdığını fark etmişsinizdir. Kendi web site adresine göre düzenlemeyi unutmayın. Ayrıca bu kodlar http protokolüne göre verilmiştir. Sitenizde SSL bulunuyorsa http yazan yeri https olarak düzenlemelisiniz.
Tüm linkleri HTTP’den HTTPS’ye Yönlendirme
Aşağıdaki kodu kullanarak web sitenize http ile gelen istekleri otomatik olarak https’ye çevirebilirsiniz.
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^ https://www.seolog.com.tr%{REQUEST_URI} [NS,R,L]
Siteme www ile veya www olmadan erişilmesi durumunda ne gibi sıkıntılar olabilir?
- Arama motorları bu durumu sevmez çünkü sitenizdeki sayfalarınızı www ile veya www olmadan 2 kez indeksleyebilir. İndexlemesi durumunda arama motoru kullanıcılara hangi yapıyı göstereceğinden emin olamayacağı için sitenizi hiç göstermeyebilir. Diğer yandan botlara ekstra iş yükü bindirdiğiniz içinde sizi sevmezler. İçerikler aynı ve sadece adres satırındaki yapının belirsizliği yüzünden 2 kez sitenizde gezecekler. Onların zamanı kıymetli ve sizinle fazla uğraşmaktansa hiç uğraşmamayı tercih etmeleri daha yüksek bir olasılıktır.
- Sitenizde caching eklentisi kullanıyorsanız bunlarda sorun çıkabilir.