Dosya uzantısı kullanmaksızın sayfa adresleme
Oluşturulan web sayfalarının adreslerinde dosya uzantıları (.php, .jsp vb) kullanılmadan web sayfalarına adres vermenin nasıl yapılabileceği, bu yazıda anlatılmaktadır. Örnek adres:
Web sayfaları için adres oluştururken tercih edilen, süregelen o geleneksel yöntem aşağıdaki gibidir:
Bir kod sayfası oluşturulur ve sayfaya URL'den parametre gönderilir. Bu durumda ziyaretçi, yukarıdaki adresi analiz ederek web sitesinin altyapısı hakkında aşağıdaki bilgileri elde edebilir.
- Sitenin dizin yapısı: Kök dizininde "haber.php" isminde bir kod dosyası var.
- Kullanılan teknoloji: "haber.php" yani PHP toknolojisi kullanılıyor.
- Parametreler: Sayfa, "HaberId" isminde bir parametre alıyor.
- vs.
Bu şekildeki adreslemelerin, bazı sıkıntıları vardır:
- Karmaşa: Böyle adreslerin, ziyaretçiler tarafından hatırlanması zordur. Başka bir sıkıntısı ise; basılı yayım organlarında (gazete, dergi vb), "?" ve ".php" içeren uzun adresler kullanıldığında, ziyaretçilerin gazeteden okuyup tarayıcılarına tuşlaması çok sıkıntılı olmaktadır. Oysa;
vukuf.com/makale/23hatırlaması ve tuşlaması kolay bir adrestir. - Güvenlik: Sisteme saldıracak olan muhtemel saldırgan, saldırılarını saltyapıya göre şekillendirecektir. Altyapı hakkında ne kadar az bilgi bilirse, işi o kadar zorlaşır.
- Esneklik: PHP teknolojisine bağımlı olunur. PHP'den örneğin JSP'ye geçiş yapılacağı zaman, sistemdeki tüm bağlantıların adresleri PHP'den JSP dönüştürülmek zorunda kalacaktır:
haber.php --> haber.jsp - İzlenim: Bazı projelerde, hangi teknolojinin kullanıldığı özellikle gizlenmek istenebilmektedir. Örneğin; ColdFusion satan bir şirket, kendi internet sitesinde PHP kullanmış olabilir. Teknolojisini gizlemek istemesi çok normal!
- vs.
Sayfaların adreslerindeki tüm bu sırlar gizlenmelidir. En büyük internet sitelerinde bu zaten yapılmaktadır. Eğer aşağıdaki gibi bir adresleme kullanılırsa sırlar gizlenmiş olur:
Görüldüğü üzere, sayfa adresinde kod dosyasının uzantısı (.php) yoktur. Dizin yapısı da görülmemektedir. vs
Bu yazıda, bu yöntemin kullanılabilmesi için sistemde hangi ayarların ve değişikliklerin yapılması gerektiği anlatılmaktadır.
Uygulama sunucusunda (PHP, ColdFusion, JSP vb) herhangi bir değişiklik yapılmasına gerek yoktur. Tüm püf noktası HTTP sunucunda (Apache, IIS vb) gizlidir. Yöntem ise şöyledir; web sunucusu, tarayıcının gönderdiği sayfa adresini, uygulama sunucusuna değiştirdikten sonra gönderir. Böylece, kodlar süregelen /haber.php yöntemiyle hazırlanırken, adres satırından ulaşım değişmiş olur:
Dizin yapısında bir değişiklik yoktur. Süregelen yöntem devam eder. Kod dosyası, kök dizindedir:
Dosyanın içeriği aşağıdaki gibidir:
Bu yöntemin kullanılabilmesi için yapılması gereken ayarların tamamı web sunucusunda (Apache, IIS vb) yapılacaktır. Konunun uygulama sunucusuyla (PHP, ColdFusion, JSP vb) hiçbir ilgisi yoktur. Bunu hatırladıktan sonra, web sunucusunda hangi ayarların yapılması gerektiğine geçelim...
Apache
Yazıdaki örnekte Apache'nin ayarları aşağıdaki gibidir:
Apache'nin kurulu olduğu dizin:C:\Program Files\Apache Group\Apache
Sitenin kök dizini:C:\Program Files\Apache Group\Apache\htdocs
Apache yapılandırma dosyası:C:\Program Files\Apache Group\Apache\conf\httpd.conf
Tüm değişiklikler Apache yapılandırma dosyasında gerçekleştirilecektir. Yapılandırma dosyası açılır ve aşağıdaki ayarlar yapılır:
Apache'ye Rewrite isimli modülü hafızaya yüklemesi emri verilmelidir. Aşağıdaki satırın başındaki kare (#) kaldırılmalır:
LoadModule rewrite_module modules/mod_rewrite.so
Apache'ye Rewrite isimli modülü kullanıma alması emri verilmelidir. Aşağıdaki satırın başındaki kare (#) kaldırılmalır:
AddModule mod_rewrite.c
Apache'ye Rewrite komutlarını kabul etmesi emri verilmelidir. Yapılandırma dosyasına aşağıdaki satır eklenir:
RewriteEngine On
...işte sıra geldi, adres satırının uygulama sunucusuna gönderilmeden önce nasıl dönüştürüleceğine... Apache yapılandırma dosyasına bir satır daha eklenmelidir:
Görüldüğü üzere, dönüştürme işleminin nasıl yapılacağı Apache'ye anlatılırken Kurallı İfade (Regular Expression) dili kullanılmaktadır:
RewriteRule ^/haber/([0-9]*).*$ /haber.php?HaberId=$1
Bu satırdan yüzlerce oluşturulabilir. Böylece, tüm sitedeki sayfaların adreslerini temizleyebilirsiniz:
Not: Apache yapılandırma dosyasında yapılan değişiklikler hemen uygulanmaz. Apache yeniden başlatılmalıdır. Ya da yapılandırma dosyasını yeniden okuması için Apache'ye komut verilmelidir (reload).
IIS
















