Mehmet Fatih YILDIZ (mfyz.com)

Menü



Ya hep ya hiç : www kullanın veya kullanmayın

Kategori : PHP ve Pear Dökümanları
Eklenme Tarihi :
20 Kasım Cuma ´09
www, subdomain, redirect, crossdomain




Dikkat : Dökümanın yazılma tarihi üzerinden en az 60 gün (2 ay) geçmiş. İçerisindeki bilgiler güncelliğini yitirmiş olabilir, uygulamada ufak sorunlar oluşabilir. Yorumları ve güncellemeleri göz önünde bulundurarak dökümanı takip ediniz.


Günümüzde ajax, flash derken client side crossdomain istekler geziyor. Bunun gibi teknolojileri kullanan uygulamalarda sık karşılaştığımız bir sorun var. Mesela flash içinde, javascript dosyalarında veya php yönlendirmelerinde bir sürü yerde yönlendirme kullanıyoruz ve aslında farkında olmadığımız bir kullanımdan dolayı oturum, istek cevaplarının gelmemesi gibi hatalar alıyoruz. Farkında olmadığımız şey şu :

Siz uygulamanızı yazıyorsunuz, flash'da actionscript yazan arkadaş veya siz http://www.mfyz.com/kaydet.php gibi bir adrese çağrı yapıyor. Veya bir işlem sonucunda http://www.mfyz.com/tesekkur.php adresine yönlendiriyor. Diyelim ki uygulamanızda oturuma birşeyler kaydettiniz, cookie yazdınız vs, ve kullanıcı http://www.mfyz.com yerine http://mfyz.com adresinden girdiği zaman sizin uygulamanızda kaydedilen oturum veya cookie'ler mfyz.com domaini için yazılıyor. Sonra uygulama içindeki yönlendirme www.mfyz.com altında bir dosyaya yönleniyor. Sonuç olarak oradaki kontrollerde "www.mfyz.com" altındaki çerezler ve oturumda değişkenler arandığı için uygulamanız hiç oturum açılmamış gibi çalışıyor.

Bir başka sorun da flash ve ajax istekler için eğer domain uyuşmaz ise tarayıcıların bu istekleri kabul etmeyeceğidir. Ajax'ta DOM hataları alırsınız (eğer firebug kullnıyorsanız görürsünüz), eğer flash'tan istek yaparsanız cevap alamazsınız çünkü flash önce o domain altındaki crossdomain.xml dosyasından sizin o domaine erişiminiz olup olmadığını denetler. Eğer bu tanımı yapmadıysanız uygulamanız çalışmaz.
Aslında www.mfyz.com ile mfyz.com aynı domain ve siteler olmasına rağmen xss gibi güvenlik nedenleri için tarayıcılar tarafından engellenmektedir.

Çözüm, giren kullanıcınızı tek yerde gezdirmektir. Yani önce sitenizi www'lu mu yoksa www'suz mu kullanacağınıza karar verip gelen ziyaretçiyi eğer www'lu ise veya www'suz ise doğru olan yere yönlendirmektir. Ziyaretçi açısından birşey değişmez, hatta hissetmez bile, ama siz uygulama geliştirirken belki haftalarca hatanın kaynağını çözemeyeceğiniz bir problemle uğraşıyor olabilirsiniz.

PHP ile bu yönlendirmeyi yapmak için aşağıdaki kodu kullanabilirsiniz.

  1. // subdomain redirection
  2. if( substr($_SERVER[HTTP_HOST], 0, 3) != 'www' ){
  3.         die('<script type="text/javascript" charset="utf-8"> window.top.location = "http://www.mfyz.com'. $_SERVER[REQUEST_URI] .'"; </script>');
  4. }

Bu kod http://mfyz.com şeklinde gelen kullanıcıyı http://www.mfyz.com altındaki gideceği yere yönlendirir. Yani site her zaman www'lu çalışır. Bunun tersini yani www'suz çalışmak istiyorsanız (mfyz.com'da olduğu gibi) aşağıdaki versiyonu kullanabilirsiniz.

  1. // subdomain redirection
  2. if( substr($_SERVER[HTTP_HOST], 0, 3) == 'www' ){
  3.         die('<script type="text/javascript" charset="utf-8"> window.top.location = "http://mfyz.com'. $_SERVER[REQUEST_URI] .'"; </script>');
  4. }

Bu teknik aynı zamanda domain'in markalaşması konusunda da psikolojik açıdan bir alışkanlık oluşturma konusundaki ince bir detaydır.

Hazırlayan : Mehmet Fatih YILDIZ


Yorumlar (5 yorum/ping var)



Üye Resmi Ziyaretçi : Ozan İlbey Yılmaz
22 Kasım Pazar ´09 01:51 tarihinde yazmış
Özellikle de yazının son cümlesinde belirtilen durum pek dikkat edilmeyen fakat önem verilmesi gereken bir durum.
 


Üye Resmi Ziyaretçi : Özgür Bozkurt
28 Kasım Cumartesi ´09 15:17 tarihinde yazmış
Ben www kullanarak çalışıyorum. Fakat bunu htaccess ile kolay bir şekilde halledebiliyoruz   :-D

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

Böylece PHP yi yormamış oluyoruz   :-D
 


Üye Resmi Üye : Akardas
20 Mart Cumartesi ´10 16:06 tarihinde yazmış
@Özgür Bozkurt

Makalenin tamamını okumadığın kesin.
.htacces ile yaptığımızda mesela bir SMF forumda giriş yapmamış gibi gösteriyor. Bunun tam olarak çözümü Mehmet abinin verdiği kodda var.
 


Üye Resmi Ziyaretçi : Özgür Bozkurt
16 Haziran Çarşamba ´10 09:55 tarihinde yazmış
@Akardas
Alakası yok. Js yönlendirme yerine ht. ile yönlendiririm. Js yönlendirme cookieleri ne zamandan beri taşıyor ?
 


Üye Resmi Üye : alone123
16 Haziran Çarşamba ´10 14:23 tarihinde yazmış
Teşekkür ederim mfyz hocam, ben de web sitem için artık www kullanmıyorum. Kullananları da www OLMAYAN adrese yönlendiriyorum. Google de farklı farklı indexliyordu sitemi. Artık hepsini hhlinks.com olarak indexleyecek inşAllah. Tekrar teşekkür ederim.
 


Yeni Yorum

Önce Okuyun Yorumlarınızda sosyal, dini ve politik taraflı mesajlar, başkalarına saldırı sayılabilecek laflardan kaçının. Argo kelimeler, küfürler otomatik olarak silinecektir. Bu kural ihlalleri ip, üyelik, isiminizin banlanmasına yol açabilir.

Lütfen yardıma yönelik, konuyu uzatacak sorularınızı/yorumlarınızı forumda yazınız. Burası konu dahilindeki kısa soluklu öneri/yorumlar içindir. Aksi halde yorumunuzu göremeyebilir, uyarı alabilirsiniz.

Hatırlatmak amacıyla : html kodlarının, link yapmak, vb amacıyla gireceğiniz ekstra bilimum şeylerin çalışmayacağını belirteyim. Yorumlayıcı zaten linklerinizi otomatik çevirecek, gülücüklerinizi dönüştürecektir. Zengin metin özellikleri için araç çubuğundaki butonları kullanın.


İletişim Bilgileri


E-Posta adresiniz gösterilmeyecektir.

(unut)

Üye iseniz, giriş yapıp bu bilgileri girmeden hızlıca yorum yapabilirsiniz. Yorumunuzda resminiz/ikonunuz ve profil bağlantınız görüntülenecek, aynı zamanda güvenlik kodu girmek zorunda da kalmayacaksınız.
Üye olmak için buraya tıklayın.

Güvenlik Kodu
Güvenlik kodunu göremiyorsanız sayfayı yenileyin!


Yukarıdaki güvenlik kodunu bu kutuya yazın.

Yorum   
- +

Ad soyad, eposta ve yorum alanları
(⊗ işaretli alanlar) zorunludur.





mfyz.com'da şu an 13 ziyaretçi geziniyor. Toplam 114 makale, 208 yazı, 2999 gönderi var



  • RSS mfyz.com'u RSS beslemeleri ile takip edebilirsiniz
  • ServerTR Hosting Sponsoru ServerTR.com'a çok teşekkür ederiz
  • CC 2.5 Sitedeki materyalleri Creative Commons 2.5 Lisansı çerçevesinde kullanabilirsiniz. Lisans hakkında bilgi almak için tıklayın
  • İstatistikler Site ziyaret istatistikleri, konu, eğilim gibi ilginç istatistikler hakkında
  • Site Hakkında Site altyapısı, hazırlanışı, kurallar ve felsefesi hakkında
  • İletişim İletişim formu, iletişim bilgileri

mfyz.com Türk Programcılığının Gelişmesine Adanmıştır
HTML Standartlarına Uygundur

CSS Standartlarına Uygundur