درود
ما یه چیزی میسازیم به نام روتر یا router و ادرس تمامی درخواست ها رو به این فایل ارسال میکنیم! بعدش با استفاده از این فایل ادرس دریافت شده رو تجزیه و تحلیل میکنیم و برحسب نیاز فایل php مورد نظر رو اجرا میکنیم!!! به این روش مسیریابی به وسیله ی router میگن

1- ساخت router با php
برایی روتر نویسی یا مسیر دهی نیاز داریم همه درخواستا پردازش بشه
پس با چند خط کد htaccess . همه درخواستارو به یه فایل میفرستیم

DirectoryIndex route.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$  route.php?uri=$1    [L,NC,QSA]

**در دستورات بالا تمامی درخواست ها رو به فایل route.php ارسال میکنیم و ادرس درخواست شده رو به صورت متد get درون uri قرار میدیم! حالا درون فایل route.php خودمون به صورت زیر میتونیم به ادرسی که درخواست شده دسترسی داشته باشیم :

**

<?php
$uri=empty($_GET['uri']) ? '/' : $_GET['uri'];
echo $uri;
?>

در دستورات بالا ادرس صفحه ی درخواستی رو دریافت میکنیم و توی صفحه نمایش میدیم ???? توی url هر ادرسی که وارد کنید توی صفحه نمایش داده خواهد شد! حالا برای اینکه بتونیم ادرس های خودمون رو مدیریت کنیم میایم از یه چندتا if یا switch case استفاده میکنیم! به مثال زیر دقت کنید :

<?php
$uri=empty($_GET['uri']) ? '/' : $_GET['uri'];
switch($uri){
case '/':
echo "<h1>this is site home page</h1>";
break;
case 'login':
echo "<h1>this is login page</h1>";
break;
case 'register':
echo "<h1>this is register page</h1>";
break;
case 'user/profile':
echo "<h1>this is user's profile page</h1>";
break;
default:
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
break;
}
?>

در دستورات بالا ادرس دریافتی رو مقایسه کردیم و بر حسب نیاز محتوای مورد نظر خودمون رو تولید کردیم ???? مثلا اگه localhost/simple_route/login رو بزنید (فایلها ی من درون پوشه ی simple_route در لوکال هاست من قرار دارن) صفحه ی لاگین به شما نمایش داده خواهد شد ???? اما من فایلی به نام login.php ندارم! خب داره جالب میشه!!!! حالا میتونید ادرس فایلها رو حتی با پسوند asp درج کنید و محتوا رو نشون بدید تا همه فک کنن برنامه رو با asp.net نوشتید! ????

میتونید محتوا رو با استفاده از دستور include یا reqiure به صفحه اظافه کنید! به مثال زیر دقت کنید :

<?php
$uri=empty($_GET['uri']) ? '/' : $_GET['uri'];
switch($uri){
case '/':
echo "<h1>this is site home page</h1>";
break;
case 'login':
echo "<h1>this is login page</h1>";
break;
case 'register.asp':
include_once 'views/registerPage.php';
break;
case 'user/profile':
echo "<h1>this is user's profile page</h1>";
break;
default:
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
break;
}
?>

خب ???? حالا با توجه به دستورات بالا اگه ادرس localhost/simple_route/register.asp رو بزنید فایل مورد نظرمون از پوشه ی view لود میشه و به کاربر نمایش داده میشه! کاربر فک میکنه سایت ما asp هست در صورتی که ما برنامه رو به زبان php نوشتیم یو هاهاها ????

دوستان با روتر نویسی خیلی کارا میشه کرد خیلی حتی امنیت

یکی از دوستان در تاپیکی سوال کرد که چیجوری به هر کاربر پروفایل با آدرسی که نام کاربریش باشه
این آموزش هم برای اون دوست عزیزمون

https://www.irdevs.com/discuss/2891/post/6770#6770

بدرود