BLOG

Htaccess ile WWW Kaldırma / Ekleme

Tayfun Erbilen ekledi. 26 Ekim 2012 Cuma

Merhaba arkadaşlar, benim her zaman problem yaşadığım bir konudur bu.. Her projemde de bunu uygularım.. Örneğin site adresini www ile belirlemişimdir.. Ancak www olmadan girince de site açıldığı için, ajax dosyamın yolu www ile belirlendiği için ajax'lar çalışmaz.. Bazı sunucularda www ile giriş yapıp, www'süz siteyi açtığında sanki giriş yapmamış gibi gözükür vs.. Bu tür sorunların önüne geçmek için ya www ile girmesini sağlayacağız kullanıcının ya da hiç www kullanmadan girmesini.. Nasıl yaparız?

Eğer anadizinde bir htaccess dosyanız varsa onu açın ya da bir tane oluşturun ve şunları ekleyin;

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

Yukarıdaki örnekte, nasıl girerse girsin her zaman www olarak yönlenecek.. Örn: ogretiyor.com olarak girin sizi www.ogretiyor.com'a yönlendirdiğini görebilirsiniz..

Bunun tam tersini nasıl yaparız? Yani www ile girse bile www ekini kaldıracak.. O zaman kodu şöyle değiştiririz;
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.siteadi\.com [NC]
RewriteRule ^(.*)$ http://siteadi.com/$1 [L,R=301]

Evet artık böyle bir problemimiz kalmadı, kolay gelsin :) Gözat

6 yorum

  1. bir arada 404 gibi özel sayfaların nasıl yapılacağını anlatırmısın tayfun. o da Htaccess il alakalıydı diye hatırlıyorum. :)

    teşekkürler.

    YanıtlaSil
    Yanıtlar
    1. Onuda anlatırım, çok zor bir şey değil zaten :)

      Sil
  2. Tayfun mesela htaccess ile index of kaldırabiliyormuyuz ? site.com/images klasörüne girdiğin zaman listeleniyorya onu kaldırmak istiyorum.

    YanıtlaSil
    Yanıtlar
    1. Htaccess ile dizine erişimi engelleyebilirsin şu şekilde;
      Order Deny,Allow
      Deny from all

      Bu kodu dosyalarına erişimi engellemek için hangi dizini istiyorsan orada htaccess oluşturup kodları yazıp atacaksın..

      Ancak bu şekilde sende kendi resimlerine vs. erişemezsin.. Bu işlemi genelde php dosyalarına erişimi yasaklamak için kullanıyoruz.. Php ile require edince çalışıyor ama direk linki girince çalışmıyor dosyalar.. Sen dizindekileri gizlemek için boş bir index.html atabilirsin.. http://www.uzmancevap.org/lib/theme/ gibi..

      Sil
  3. @Adsız, o klasöre erişmeye çalıştığında Forbidden uyarısı verdirmek istiyorsan, "Options -Indexes" özelliğini kullanman gerekiyor. Directory Listing özelliğini kaldırır.
    Ya da benim kullandığım şöyle bir örnek vereyim sana;


    Order deny,allow
    Deny from all
    Allow from IP_Adresi
    Options -Indexes


    Burda ne olduğunu şöyle açıklayım kısaca sana;
    1. satırda yazdığımız kuralın hangi klasör için geçerli olacağını tanımladık.
    2. satırda Deny ve Allow yani izin verme, izin ver sırasını tanımlıyoruz. Buna göre ilk önce izin vermiyor, sonra da tanımladığımız değerlere izin veriyor.
    3. sırada gelen tüm requestlere dur diyoruz.
    4. satırda sadece belirlediğimiz ip adresinden gelen requestlere izin veriyoruz. Bunu şöyle de yapabiliriz;
    Mesela ip adresin 82.145.242.4,
    Allow from 82.145.242.4 dediğinde sadece senin IP adresine izin verecektir. Ya da kullandığın ip adresini belirtirsen, prefix olarak da verebilirim sana bu değeri, sadece senin kullandığın ISP üzerinden bu klasöre ulaşışabilir mesela. 82.145.242.0/24 dersen mesela senin subnetindeki bütün IP adresleri ulaşabilir bu klasöre.
    5. satırdaki options -indexes ile directory listing(klasör listeleme) özelliğini devre dışı bıraktık. Bu senin yapmak istediğindi.
    6. satırda açtığımız directory'nin kapanışı.

    Başka sorun olursa, seve seve yardımcı olayım.

    YanıtlaSil
  4. 1. ve 6. satırlar html tagi gibi algılandığından çıkmamış sanırım onları da açılış ve kapanışları olmadan yazıyorum:

    Directory "/www/***/***/***/wp-admin/"

    /Directory

    YanıtlaSil

HAKKIMDA

2009'dan beri web işleriyle uğraşan, aynı zamanda amatör müzikle de uğraşan sıradan birisi..