Mod_rewrite bize Apache sunucusunun getirmiş olduğu bir özelliktir. Çok farklı amaçlar için kullanılabilmektedir. Daha öncesinde SEO yapmak için kullanmamız örnek verilebilir.

İşimize başlamadan önce .htaccess dosyamızı kullanacağız. Genel olarak kök dizine (/root) yerkeştirilir. Örnek bir .htaccess dosyası açağıdaki gibidir.

RewriteEngine On
RewriteBase /
RewriteCond %{REQUESTFILENAME} !-f
RewriteCond %{REQUEST
FILENAME} !-d
RewriteRule . /index.php [L]

Şekilde kodda ilk satırda Re_write engine’i kullancağımızı ve bunu açık konuma getirdiğimizi belirtiyoruz. Diğer 2 satırda da istenilen isimde bir dosya veya klasör yoksa /index.php ye yönlendirilmesi gerekdiğini söylüyoruz. Örnek olarak WordPress standart .htaccess dosyasını açarsanız bu satırı görebilirsiniz.

Bu şekilde siteniz hiçbir zaman 404 hatası vermeyecektir.

.Htaccess dosyasına yazdığımız bu komutların bazılarının sonunda

[L], [NC] gibi ifadeler görüyoruz. Bunlara da flag(bayrak) denilmektedir. Yönlendirme sisteminde yardımcı olmaktadır. Bazı örnekler:

[R]= Belirtilen adrese 301 yönlendirilmesi yapar

[F]: Verilen adrese yönlendirilip 403 Forbidden engellemesi yapar. Erişimi engeller

[NC]: Büyük küçük ayrımı yapmadan re_write yapma olanağı verir.

[QSA]: GET yapılmış request’i adres satırına ekler.

Bir kaç örnekle konumuzu sonlandırıyoruz:

ErrorDocument 404 http://www.harmankaya.org/404.html
ErrorDocument 403 http://www.harmankaya.org/403.html

www.harmankaya.org/yazilar/baslik/5 şeklinde bir kural oluşturmak için ;

RewriteRule ^yazilar/([A-Za-z0-9-]+)/([0-9]+)/?$   yazilar.php?baslik=$1&sayfa=$2

Gördüğünüz gibi RexExp kullandık. Sebebi (.*) kullanıp her değişkeni kabul etmek yerine sayı girilecek yere sayı, kelime girilecek yere kelime kabul etmesini sağlamak.

Daha fazla örnek için: [şu resme] bakabilirsiniz