آموزش ساخت سیستم روتینگ (Routing) ساده در PHP طبق استانداردهای گوگل
مقدمه؛ چرا به سیستم روتینگ (Routing) نیاز داریم؟
در پروژههای قدیمی PHP، برای هر صفحه یک فایل مجزا مانند about.php یا contact.php ساخته میشد. این روش نه تنها توسعه پروژه را سخت میکرد، بلکه از نظر سئو (SEO) نیز مطلوب نبود. گوگل به شدت روی خوانایی و تمیز بودن URLها حساس است.
سیستم روتینگ به ما اجازه میدهد تمام درخواستها را به یک فایل واحد (معمولاً index.php) هدایت کرده و بر اساس آدرس وارد شده توسط کاربر، بخش مناسب را نمایش دهیم.
گام اول: پیکربندی فایل .htaccess
برای شروع، باید به وبسرور آپاچی بگوییم که تمام درخواستها را به فایل index.php بفرستد، مگر اینکه درخواست برای یک فایل واقعی (مثل عکس یا CSS) باشد. برای این کار یک فایل به نام .htaccess در روت پروژه ایجاد کنید:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
گام دوم: طراحی کلاس روتینگ (Router.php)
حالا یک کلاس ساده برای مدیریت مسیرها مینویسیم. این کلاس مسئول ثبت مسیرها (Routes) و اجرای تابع مربوط به هر مسیر (Callback) است:
class Router {
private $routes = [];
// ثبت مسیر جدید
public function add($route, $callback) {
$route = trim($route, '/');
$this--->routes[$route] = $callback;
}
// بررسی و اجرای مسیر منطبق
public function dispatch($url) {
$url = trim($url, '/');
foreach ($this->routes as $route => $callback) {
if ($route === $url) {
if (is_callable($callback)) {
return call_user_func($callback);
}
}
}
// در صورت عدم وجود مسیر
header("HTTP/1.0 404 Not Found");
echo "< h2 > صفحه مورد نظر یافت نشد (404) < / h2 >";
}
}
گام سوم: راه اندازی فایل index.php (Front Controller)
حالا تمام بخشها را در فایل اصلی پروژه یعنی index.php به هم متصل میکنیم:
require_once 'Router.php';
$router = new Router();
// تعریف مسیرها
$router->add('', function() {
echo "
< h2 > به صفحه اصلی خوش آمدید < / h2 >
< p > این صفحه با روتینگ استاندارد لود شده است. < / p >";
});
$router->add('about', function() {
echo "
< h2 > درباره ما < / h2 >
< p > ما یک تیم توسعه دهنده پرانرژی هستیم.< / p >
< p > ";
});
$router->add('contact', function() {
echo "
< h2 > تماس با ما < / h2 >
< p > از طریق ایمیل info@example.com با ما در ارتباط باشید. < / p >";
}); // دریافت آدرس فعلی و اجرای روتینگ $url = isset($_GET['url']) ? $_GET['url'] : ''; $router->dispatch($url);
نتیجهگیری و مزایای سئو (SEO)
با پیادهسازی این سیستم ساده، شما چندین گام بزرگ به سمت استانداردهای گوگل برداشتهاید:
- آدرسهای تمیز (Clean URLs): دیگر خبری از پسوندهای نامناسب مثل
.phpنیست. - مدیریت خطای ۴۰۴ استاندارد: گوگل صفحات شکسته را شناسایی کرده و نمره منفی نمیدهد.
- یکپارچگی و امنیت بالا: تمام ورودیها از یک نقطه کنترل میشوند.
پرسش و پاسخ
نظری یافت نشد
برای ارسال نظر ابتدا وارد شوید