23 Mart 2009 Pazartesi

Url Rewrite Filter ile arama moturu dostu URL yapmak...

Öncelikle arama motoru dostu bağlantılar artık moda olduğundan eninde sonunda karşınıza çıkacaktır. Neden mi? Çünkü MODA!

Peki Java'da bunu nasıl yaparız? Php de bir çok örneği var. Mesela Apache Http sunucusunun mod_rewrite eklentisi ile bunu php , perl v.b. destekli sunucularda yapmak kolay. Hatta php de buna özel betikler var.

Java'da bu soruna merhem olan API ler mevcut. Ben http://urlrewritefilter.googlecode.com adresindeki api kullanarak bir örnek yapacağım. Diğer ulaşılabilir adres ise http://tuckey.org .

Mesela yapmak istediğimiz şunlar olsun :
  • index.jsp yerine /index
  • index.jsp?id=44&baslik=Teneke-adam yerine /index/44/Teneke-adam olsun
yukarıdaki şekilde sitemdeki bağlantıların erişim adresleri arama motoru dostu olmasını çok istemekteyim. Peki bunu nasıl yaparız.

Önce Eclipse'de bir web projesi oluşturun. Bunun /WEB-INF/lib dizini altına urlrewrite-3.2.0.jar'ı ekleyin. Sonrasında ise /WEB-INF/urlrewrite.xml dosyası oluşturun. Adı urlrewrite.xml olan dosya sizin arama motoru dostu bağlantılarınızın kaynağı olacaktır. Sebebi burada geçerli bağlantı dokularını - url pattern - belirteceksiniz. Belirtilen bağlantı dokularına uyan bağlantılar o kurallara göre işletilerek istediğimizi elde edeceğiz.

Bağlantı dokularında dikkat edilmesi gereken bazı noktalar mevcut:

  • from etiketlerinde yazılan bağlantı dokuları ya da regex patternlerde
    ? yerine \?, = yerine \= , & yerine amp; kullanın.
  • Bağlantılarınızı otomatik outboundrule ile oluşturmak için kesinlikle response.encodeURL() kullanın. Örn: response.encodeURL("/index.jsp?id=44&baslik=dayimin-oglu"); gibi. Siz normal yazın ancak response.encodeURL() ile arama motoru dostu url olsun! Ancak unutmayın eğer bağlantı dokusunda - regex pattern - (^/index.jsp\?id\=([0-9]+)amp;baslik\=([0-9][a-zA-Z]+)$) olduğunda siz response.encodeURL("/index.jsp ....") index.jsp'nin önünde "/" işereti olmaz ise aynı dokuya denk değildir! Bunu unutmayın!

Kural örneği resmi:



index.jsp:




Gerisi sizin hayal gücünüze kalmış...

Örnek bir Eclipse projesi : örnek proje

Projeyi indirip baktığınızda daha iyi anlayacaksınız.

Hiç yorum yok: