نوشته شده توسط
MohammadGh2011
وقت بخیر
بستگی به ساختار برنامه شما داره. اما بصورت کلی بهتره مدیریت مسیرها (routes) در داخل برنامه انجام شود. بنابراین هر url ای که مجازی باشد (متناسب با آدرس، فایل یا پوشه ای روی هاست وجود نداشته باشد) به یک فایل مثلا index.php هدایت می کنیم. در ابتدای این فایل url درخواستی از متغیر $_SERVER['REQUEST_URI'] خوانده شده و با مسیرهایی که از پیش تعریف کرده اید مطابقت داده می شود. شما میتوانید مسیرهای خود را در یک آرایه ذخیره کنید و یا آنها را در دیتابیس درج کنید.
#.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
index.php
$URI = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$URI = explode('/', $URI);
$URI = array_values(array_filter($URI));//remove empty values
$routes = array(
'تماس-با-ما' => 'contact.php',
'درباره-ما' => 'about.php',
);
$file = 'main.php';
if(count($URI)>0 && array_key_exists($URI[0], $routes)){
$file = $routes[$URI[0]];
}
include($file);
هدف از این کدها تنها آشنایی شما با مسیرها است و بسته به ساختار برنامه شما نیاز به تغییر دارد.
در ضمن اگر عنوان صفحه شما «تماس با ما» باشد برای خوانایی بیشتر باید فاصله را به خط تیره تبدیل کنید همچنین برخی کاراکترها در url مجاز نمی باشند. بنابراین برای ساخت slug نیاز به یک تابع دارید که کافیست php slug generator را در گوگل جستجو کنید.