Bir web sitesi oluşturduğunuzda, günümüz sunucularında, web sitesine erişim hem http://www.alanadı.uzantı/ hem de http://alanadı.uzantı/ şeklinde sağlanmaktadır. Bu durum teknik olarak aynı içeriğe iki farklı adres üzerinden erişim sağlamaktır. SEO kurallarına göre, içeriğiniz özgün olmalıdır ve birden fazla adreste aynı içeriğin bulunması olumsuz etki yaratmaktadır.
Bu yazıda anlatılanları denemek için: Hemen buradan bir hesap açarbilir, 55 saniyede bulut sunucunuzun kurulumunu tamamlar ve 2 ay boyunca ücretsiz kullanırsınız…
Diğer bir yandan, kullanıcılarınız için standart bir adres oluşturmak, marka yaratmak ya da yazım kolaylığı sağlamak için böyle bir kısıtlamaya gitmek isteyebilirsiniz.
Sunucunuzdan www için yaratılmış tüm tanımları kaldırabilirsiniz. Böylece siteniz sadece http://alanadı.uzantı/ şeklinde çalışacaktır. Peki ya alışkanlıklarımız? Kullanıcılar özellikle .com uzantıları için adres çubuğuna alanadı yazdıktan sonra Ctrl + Enter tuş kombinasyonları ile http://www.alanadı.com/ adresine ulaşabilmekte. Bu durumda www tanımını kaldırdığınız için siteniz açılmayacaktır.
Ne yapmalıyız? www.alanadı.uzantı şeklinde yazılan tüm adresleri kalıcı olarak alanadı.uzantı adreslerine yönlendirmeliyiz. Örneğin: Sunucunuza http://www.alanadı.uzantı/sayfa/altsayfa şeklinde bir istek geldiğinde, otomatik olarak sizi http://alanadı.uzantı/sayfa/altsayfa adresine yönlendirebilmeli. Arama motorlarına da bu yönlendirmenin kalıcı olduğunu bildirerek, tek bir adres üzerinden kataloglama yapmalarını sağlayabiliriz.
Bir metin editörü kullanarak .htaccess isimli bir dosya yaratın. İçerisine de aşağıdaki satırları yazın. Kaydedip, sitenizin ana klasörüne yükleyin. Hepsi bu…
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Gelelim yazdıklarımızın açıklamasına: İlk satırda bulunan RewriteEngine On ifadesi, apache sunucumuza gelen istekleri yeniden düzenleyeceğimizi, bunun için gerekli olan mekanizmayı aktif etmesi gerektiğini bildiriyor.
İkinci satırda bulunan RewriteBase / ise, istekler düzenlenirken taban olarak yani başlangıç olarak ana klasörü kullanacağımızı belirtiyor. Bu düzenlemeleri bir alt klasör için aktifleştirmek isteseydik, kullanacağımız deyim şu şekilde olacaktı: RewriteBase /altklasor
Üçüncü satırda ise, hangi adreslerin düzenleneceğini belirtiyoruz. Yani şu şu şu şartlara uyan adresleri düzenleyeceksin diyoruz. Şartımıza bakacak olursak, adresimizin sunucu adı www ile başlayıp, bir şey bir şey ile devam etmeli demişiz. Yani www.alanadı.uzantı/ veya www.alanadı.uzantı/birsey şeklinde olan tüm adresleri yeniden düzenleyeceksin dedik. Satır sonunda bulunan [NC] belirteci de No Case yani büyük / küçük harf ayrımına bakma demek.
Dördüncü satırda ise, bir üst satırda belirttiğimiz şartlara uyan adresleri nasıl yeniden düzenleyeceğini söylüyoruz. ^(.*)$ ile adresteki her şeyi seçiyoruz. www.alanadı.uzantı/ adresinde hiçlik olan bu değer, www.alanadı.uzantı/birsey adresinde ise birsey‘e karşılık gelmekte.
Seçimden sonra adresi şu hale getir diyoruz: http://%1/$1 burada %1 alan adımızı temsil etmekte. Yani alanadı.uzantı‘ya karşılık gelmekte. %0 yazsaydık www.alanadı.uzantı, %2 yazsaydık uzantı‘ya karşılık gelecekti. Sonra bir / işareti ve arkasına da, ilk bölümde seçtirdiğimiz her şeyi yaz dedik. Düzenli ifadeler ile yaptırdığımız seçimler () işeretleri ile gruplanır.
Ne kadar çok parantez içimiz olursa, o kadar çok seçim yaptırmış oluruz ve o kadar çok $ parametresi aktifleştirilir. Biz tek bir parantez içi kullandığımız için tek bir parametre tanımlandı. O da $1. Onu da adresin sonuna eklettik.
Adresimizin son hali de şu oldu: http://alanadı.com/birsey Şimdi bu yeni adresi istemciye bildirmeye geldi. R belirteci, yani Redirect ile yeniden yönlendirmeyi başlatıyoruz. Hata kodu olarak da 301 gönderiyoruz. HTTP başlıklarında 301 kalıcı olarak yönlendirildi demek. Bir sonraki gelişinde doğrudan yeni adresi kullan dedik. L belirteci ile de bu satırın son kural olduğunu, başka kurallara bakmasına gerek olmadığını söylüyoruz.
Düşünün binlerce kuralınız var ve bir tanesi şartınızı sağladı. Diğerlerine bakıp vakit kaybetmeye gerek yok değil mi? :)
Adres çubuğuna http://www.alanadı.uzantı/birsey yazarak başlattığımız isteğin, sunucu tarafından geri dönüşü şu şekilde olacaktır:
HTTP/1.1 301 Moved Permanently Date: Mon, 04 May 2015 09:05:23 GMT Server: Apache/2.4.6 (CentOS) Location: http://alanadı.uzantı/birsey Content-Type: text/html; charset=utf-8
Hepsi bu kadar…
Siz de kendinizi geliştirmek ve/veya bulut sunucuların avantajlarından faydalanmak isterseniz: hemen buradan bir hesap açabilir, 55 saniyede yeni sunucunuzun keyfini, 2 ay ücretsiz deneyerek, sürebilirsiniz…