لوگوی وبسایت
تمام آموزش های وبسایت رایگان می باشد ، پس از صفحات مختلف سایت دیدن فرمایید .

آدرس دهی دوستار سئو Seo Friendly در PHP

شاید شما هم بخواهید آدرس های خوانا و زیبایی برای سایتتان ایجاد کنید . و قطعا طی این جستجو ها با htaccess برخورد کردید ! آیا میدانید فریم ورک های بزرگ اصلا از htaccess برای این کار استفاده نمی کنند ؟ ( تنها شاید برای حذف index.php !‌) . در این آموزش ما با استفاده از regex می توانیم بدون هیچ زحتمی ، زیبا ترین آدرس های مد نظرمان را پیاده کنیم !

اساس کار ما چطور هست ؟ آدرس دهی seo friendly

ما میخواهیم ابتدا با استفاده از .htaccess فقط index.php رو از بین ببریم . تنها استفاده ما از htaccess فقط این است ! بقیه کار را با php انجام می دهیم .

ابتدا ما با استفاده از REQUEST_URI‌ آدرس دریافتی را بدست می آوریم سپس با regex هایی که از قبل نوشته ایم مطابقت می دهیم . اگر با یکی از regex ها مطابقت داشت ، تابع مربوط به آن را صدا می زنیم .

توجه کنید که ما در این آموزش می توان گفت تا حدودی ساختار MVC را رعایت کرده ایم ولی شما خیلی راحت می توانید با ساختار MVC خودتان پیاده کنید .

بهتر است قبل از مطالعه این آموزش قسمت های قبلی شی گرایی را مطالعه کنید زیرا ما در این آموزش از شی گرایی استفاده می کنیم .

شروع برنامه نویسی …

ابتدا یک فولدر به نام مثلا mhrdev_routing بسازید و فایلی به نام index.php در آن بسازید .

در پوشه ی mhrdev_routing یک فایل دیگر نیز به نام .htaccess بسازید و کد زیر را در آن قرار دهید :

خوب حالا برای مثال آدرس زیر را باز کنید : ۱۲۷٫۰٫۰٫۱/mhrdev_routing/test

خوب باید با یک صفحه ی سفید بدون هیچ ارور یا پیامی مواجه بشوید .

دلیل این اتفاق این است که شما به آپاچی با استفاده از htaccess فهمونده اید که اگر آدرسی وارد شد ، فرض کند که اول آن یک index.php هم بوده و در اصل http://127.0.0.1/mhrdev_routing/index.php/test  است.

خوب حالا در فایل index.php یک کلاس به نام Routing بسازید و contructor آن را به شکل زیر تعریف کنید .

همانطور که می دانید $_SERVER['REQUEST_URI'] به ما آدرس درخواستی بعد از نام دامین را بر میگرداند .

آدرس  http://127.0.0.1/mhrdev_routing/test را باز کنید . خروجی ما باید به شکل زیر باشد :

همانطور که می بینید نام mhrdev_routing در آدرس ما هم هست . ما با استفاده از script path می توانیم این بخش را حذف کنیم که باعث پیچیده تر شدن آموزش می شود . پس به صورت عادی با استفاده از str_replace می آییم و آدرس فولدر اسکریپت را از آدرس حذف می کنیم .

خروجی باید به شکل /test باشد . خوب حالا یک trim هم انجام میدیم که بهترین حالت را داشته باشیم !

خروجی جدید باید به شکل test باشد .

خوب حالا یک متد جدید به نام getRoutes تعریف میکنیم که قرار است یک آرایه به ما برگرداند که index آرایه ها regex و value آرایه ها یک تابع callable می باشد .

این جا است که شما میتوانید برای مثال یک controller یا … را تعریف کنید . برای سادگی آموزش من یک تابع ساده callable تعریف می کنم .

مدیریت آدرس ها استفاده از RegEx

من متد را به شکل زیر می سازم .

اولین داده مربوط به صفحه ی اصلی می باشد. این داده چک میکند اگر آدرس خالی بود یا / بود صفحه ی اصلی را نشان دهد .

دومین داده مربوط به مثلا یک صفحه ی یکتا به شکل home می باشد که فقط متن خانه را نمایش می دهد .

سومین داده مربوط به مثلا بخش پست ها می باشد که ما مثلا post_url را از کاربر میگیریم ( چیزی شبیه وردپرس ) .

ورودی $params مربوط به خروجی preg_match می باشد که مثلا در داده ی سوم به ما post_url را می دهد .

خوب حالا باید در __constructor بیاییم و تک تک این regex ها را بررسی کنیم.

خوب ما در این کد اول یک حلقه foreach برای تک تک این regex ها انجام دادیم و در حلقه با استفاده از preg_match آمدیم آدرس را با regex ها مطابقت دادیم .

اگر طول آرایه خروجی $matches ما بیشتر از ۰ باشد یعنی مطابقت انجام شده و داده هایی مانند post_url هم در این آرایه قرار دارد . ما این مقادیر را با استفاده از call_user_fanc_array به callable خود می فرستیم .

آشنایی بیشتر با preg_match

آشنایی بیشتر با call_user_func_array

به همین راحتی حالا آدرس های مد نظرتان را چک کنید ویا با استفاده از Regex آدرس اضافه کنید !

کد نهایی :

index.php

.htaccess:

 

 

بر چسب های پست : , , , , , ,
مطالب مرتبط
سلام دوستان . امیدوارم خسته نباشید . در این آموزش قرار است با PHPDoc به عنوان مغ ...
۰۹ اردیبهشت ۹۵
3 دیدگاه
سلام دوستان . در قسمت قبلی با کلاس ها ،‌اشیا ، خواص و متد ها آشنا شدیم و در این ...
۰۳ اردیبهشت ۹۵
2 دیدگاه
متاسفانه امروزه برای بیشتر برنامه نویس های PHP مفهوم شی گرایی تبدیل به یک مفهوم ...
۰۲ اردیبهشت ۹۵
1 دیدگاه
4 دیدگاه برای “آدرس دهی دوستار سئو Seo Friendly در PHP”
  1. mostafa74 گفت:

    سلام
    عالی بود
    لطفا یه مثال میزنید که چجوری Controller رو توی فایل bootsrap با استفاده از callable ست کنیم ؟!

    1. کاری که من توی آموزش انجام دادم این بود که یک سری callable رو به یک سری regex مربوط کردم
      ولی خب این کار ساده ترین کار حساب میشه .. اگه میخواید اصولی کار کنید بهتره یک سری رشته مثل user/panel رو به regex ها نسبت بدید طوری که خودتون بدونید ساختار این رشته ها به شکل controller/action هست ، حالا یک کلاس کنترلر بسازید که action یکی از متد های این کلاس هست و اون متد رو اجرا کنید .

      امیدوارم که منظورتون رو از سوال درست متوجه شده باشم .

  2. لطفا در مورد هدفمنی این سرویس بیشتر توضیح دهید

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

ورود به حساب کاربری
بستن این پنجره