Apache Sunucuda Adreslere www Ekleme

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.

Sunucularda genellikle alan adları www olmadan yaratılır. Daha sonra ise, sembolik bir bağlantı oluşturulur. Yani alan adınız tek bir tane iken, basit bir yönlendirme ile www yazıldığında da çalışır hale gelir. Böylece siteniz hem http://alanadı.uzantı/ hem de http://alanadı.uzantı/ şeklinde çalışacaktır. www yazmadan sitemize ulaşanları ne yapacağız?

alanadı.uzantı şeklinde yazılan tüm adresleri kalıcı olarak www.alanadı.uzantı adreslerine yönlendirmeliyiz. Örneğin: Sunucunuza http://alanadı.uzantı/sayfa/altsayfa şeklinde bir istek geldiğinde, otomatik olarak sizi http://www.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, web sitenizin ana klasörüne yükleyin. Hepsi bu…

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$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şlamayıp, bir şey bir şey ile devam etmeli demişiz. Yani alanadı.uzantı/ veya 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. alanadı.uzantı/ adresinde hiçlik olan bu değer, alanadı.uzantı/birsey adresinde ise birsey‘e karşılık gelmekte.

Seçimden sonra adresi şu hale getir diyoruz: http://www.%{HTTP_HOST}/$1 burada %{HTTP_HOST} alan adımızı temsil etmekte. Yani alanadı.uzantı‘ya karşılık gelmekte. Böylece adresimizin önüne www ekleyip, ardından alan adımızı yerleştirmiş olduk. 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://www.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://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://www.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…

facebooktwittergoogle_plus

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir