Ubuntu platformunda rewrite kurulumunu(etkinleştirilmesi) anlatacağım. İşinize yarayacaktır diye düşünüyorum. (apache kurulu varsayılmıştır)
Ne işe yarar bu modül?
Apache web sunucusunda URL yi yeniden yazma ve düzenleme iznini verir.
Tam olarak ne işe yaradığını öğrenmek için arşivimizdeki bu yazıyı okumanızı tavsiye ediyorum.
sudo a2enmod rewrite
Yukarıdaki komutu çalıştırarak modülü etkinleştiriyoruz. Daha sonra ilgili projenizin vhost dosyasında birkaç düzenleme yapmamız gerekecek.
sudo nano /etc/apache2/site-available/default
Açılan vhost dosyasında aşağıdaki değişiklikleri yapmanız gerekiyor. İlk açtığınızdaki durumunu ve yanına okla yapmanız gereken düzenlemeyi belirtiyorum.
AllowOverride None -> AllowOverride All
Görmüş olduğunuz tüm “AllowOverride None” ları “AllowOverride All” a çeviriyoruz ve kaydedip çıkıyoruz. Son olarak apache‘yi yeniden başlatacağız.
sudo /etc/init.d/apache2 restart
Modül artık aktifleşti. Projenizde kullanabilirsiniz, hayırlı olsun.
]]>Örneğin sitenizin adresi www.deneme.com olsun.
www.deneme.com/test.php?lang=tr&limit=100&action=list şeklinde bir URL niz var. Bu URL’nin sonucu olarak da sitede türkçe dilinde 100 adet şarkı listelenmiş olsa bütün değişkenlerimiz apaçık ortada her an değiştirilmeye veya kurcalanmaya hazır beklemiş olurlar.
Bu URL’yi mod_rewrite ile www.deneme.com/tr/100/list şeklinde değiştirebiliriz. Ya da başka bir kural belirleriz buna göre yeniden oluştururuz.
Bir arama motorunun bu sayfa ile ilgili düşünceleri pek de iç açıcı olmayabilir. Sebebi Url’de içerik ile ilgili bir şeyin olmaması.
Url şöyle olursa şık olur :
www.deneme.com/gunumuzun_en_iyi_100_türkçe_sarkisi-100_tr_list.html
Böyle olduğunda sondaki .html tamamen yalancı bir ek, 100_tr_list kısmında aslında değişkenlerimizi göndermiş oluyoruz, ondan önceki kısımda ise arama motorlarıın aradığı şeyi bulduğu hakkında bilgisini kuvvetlendirmiş oluyoruz. URL de ve sitede aynı içeriği bulması, sizin arma sonuçlarında bir miktar dha yukarlarda olmanıza imkan verebilir.
Kullanıcmı :
Basit bir şekilde bir yeniden yazma işlemi şöyle olur.
RewriteEngine on
# aşağıdaki 2 satır request_uri nin içinde ahmet.html diye bir şey geçiyorsa, onu mehmet.html ye yönlendirir.
RewriteCond %{REQUEST_URI} ahmet.html
RewriteRule mehmet.html
RewriteRule Komutunu öğrenmiş olduğunuz için mutlu olabilirsiniz. Bununla birlikte rewriteCond ile sınırlarınızı bariz bir şekilde genişletebilirsiniz. Çünkü bu komut ile yapabileceklerinizin sınırı bariz bir şekilde artıyor. Yazılım diline yük olabilecek şeyleri, Server (Apache) tarafından kolayca halledebiliyorsunuz. RewriteCond bildiğimiz if manasına geliyor.
Komut şu şekilde çalışıyor :
RewriteCond %{REMOTE_ADDR} 123.45.67.89
Server değişkenlerinden en kullanışlılarını liste halinde vermek istiyorum (Bunlar örneğin ilki %{HTTP_USER_AGENT} şeklinde kullanılıyor) :
Not : Eğer Bu değişkenlerin içinde ne olduğunu bilmiyorsanız veya merak ediyorsanız, phpinfo() fonksiyonu ile bu değişkenleri görebilirsiniz. Keza aynı değişkenler php tarafından da kullanılamaktadır.
]]>