Merhaba,
https://site.com/iletisim.php şeklinde olan URL yapılarını nasıl
https://site.com/iletisim şeklindeki daha kurumsal ve profesyonel uzantılara dönüştürebilirsiniz bundan bahsedeceğiz.
İlk olarak sitemize yapılan istekleri index.php dosyamızın üzerinde kullanabileceğimiz şekilde .htaccess dosyamızı düzenleyelim.
RewriteEngine on
RewriteRule ^([a-zA-Z0-9-_/]+)$ index.php [QSA]
.htaccess dosyamıza eklediğimiz bu blok sayesinde alan adımızın sonuna gelen tüm uzantıları ilgili dosyaya bağlamak yerine index.php dosyamıza yönlendireceğiz.
index.php dosyamızda varsa include ettiğimiz fonksiyon dosyalarından sonraki satırlara, URL yapısını kullanabilmemiz ve gerekli dosyayı çağırabilmemiz için aşağıdaki kod bloğunu ekliyoruz.
<?php
$first_route = explode('?',$_SERVER["REQUEST_URI"]);
$gets = explode('&',$first_route[1]);
foreach ($gets as $get) {
$get = explode('=',$get);
$_GET[$get[0]] = $get[1];
}
$routes = array_filter( explode('/',$first_route[0]) );
foreach ($routes as $index => $value):
$route[$index-1] = $value;
endforeach;Tarayıcıdan istek yapılan alan adımızdan sonraki kısmı explode ederek array haline getiriyoruz. Array filter ile url yapısının dışındaki GET vb. istekleri temizleyerek foreach içerisine alıyoruz ve $route değişkenine atıyoruz.
https://site.com/iletisim şeklinde gelen uzantıyı almak için $route[0] değişkenini kullanabiliriz, URL'deki uzantılar arttıkça sayıları da arttırarak almak istediğimiz bloğu alabiliriz.
Örneğin;
https://site.com/iletisim
echo $route[0]; // Çıktı: iletisim
https://site.com/kategori/indirim
echo $route[1]; // Çıktı: indirim
$route değişkeninden gelen sayfaları include yöntemi ile ilgili PHP veya HTML dosyasını çağırabilirsiniz. İstenmeyen veya mevcut olmayan sayfalar için istek gelirse file_exists() fonksiyonu ile dosyaların belirtilen konumda olup olmadığını kontrol ettirebilirsiniz.
İyi çalışmalar.