آموزش عوض !!! آدرس url یا url rewriting در php به صورت دلخواه و داینامیک !!! آدرس url در php , رفع مشکل بهم ریختگی قالب در url rewriting و برطرف !!! آن

 

سلام این پست رو مفصل راجع به عوض !!! url یا url rewriting میپردازیم.

اگه خودتون رو در php حرفه ای میدونین یا اینکه میخواین حرفه ای بشین حتما باید با عوض !!! url یا url rewriting در php کامل آشنا و مسلط باشین.

خوب شاید واستون سوال پیش بیاد که چرا باید آدرس رو عوض کنین و اصلا چه نیازی بهش دارین , فرض میکنیم شما برای نمایش اخبار برای ادرس دهی در php از کوئری استرینگ یا متد get استفاده میکنین مثل news.php?id=10 و برای خوندن و گرفتن مقداری از متد get استفاده میکنین اما توصیه میکنم اگه میخواین ساییتون تو گوگل رتبه خوبی داشته باشه این روش رو بی برو برگشت باید بزارین کنار چون گوگل شاید بتونه آدرس فایلون رو بخونه و ثبت کنه اما هیچ وقت صفحه تون که خبر رو نشون میدین رو نمیخونه و ناشناس در نظر میگیره چرا که شما برای هر خبر یه id در نظر میگیرین و گوگل برای صفحه تون هیچ اعتباری قائل نیست , البته بگم صفحه های شما در گوگل ثبت میشه و شاید شما این نوع آدرس ها با get رو هم در گوگل دیده باشید اما مهمترین مسئله کلمه کلیدی هست یعنی کاربر عنوانی رو که حتی شما تو خبراتون دارین رو سرچ کنه سایت شما رو نمیاره و اولویت رو با سایتایی قرار میده که اون کلمه ی کلیدی یا سرچ شده در url وجود داشته باشه.

پس اگه به سئو (seo) و رتبه سایتتون خیلی اهمیت میدین کل سایتتون رو از روش url rewriting استفاده کنین. البته قسمت ادمین و مدیریت ادمین بحث ـش جداس و این روش هم وقت گیره هم قابل اجرا نیست.

خوب برای اینکه url سایتتون رو عوض کنین شما با فایل htaccess سرو کار دارین که آدرس url تون رو پردازش کنه یکی فایلی که به htaccess معرفی کردین تا آدرس ها رو به چه فایلی بده.

نکته : شما تو htaccess میتونید جوری کد بنویسید که برای هر مقدار یه فایل رو فراخوانی کنه مثلا اگه کاربر تو آدرس www.example.com/news رو زد فایل news.php رو اجرا کنه و یا کاربر آدرس www.example.com/category زد فایل category.php اجرا شه , اما این روش به شدت سخت هست شما حتما باید به دستورهای htaccess مسلط باشین هم اینکه داینامیک !!! ش  سخته اما روشی که من میگم خیلی ساده تر و داینامیک !!! ش هم آب خوردنه و تنها کاری که باید !!! ین اینه که شما همه ی آدرس ها رو بگیرین و به فایل index.php بفرستین.

خوب بریم سراغ کد httaccess :

 

 rewriteengine on rewritecond %{script_filename} !-d rewritecond %{script_filename} !-f rewriterule ^(.*)$ index.php?url=$1 

اینجا شما به htaccess میگین که کاربر هر آدرس وارد کرد صفحه index.php رو اجرا کنه

و کد php صفحه ی index

 

  if(isset($_get['url']) and !empty($_get['url'])) { $page = $_get['url']; $test = explode("/",$page); $count = count($test); if($test[0]=="news"){ if(isset($test[1])){ echo "خبر".$test[1]."br>------br>"; } } for($i=0;$i<$count;$i++){ echo $test[$i]."br>------br>"; } $address = "http://127.0.0.1/chapter2/htaccess/";  echo "br>br><a href='news/10/آموزش عوض !!! آدرس در url'> آموزش عوض !!! آدرس در url a>br>"; echo "<a href='$address"."news/10/آموزش عوض !!! آدرس در url'> آموزش عوض !!! آدرس در url a>"; }else { $address = "http://127.0.0.1/chapter2/htaccess/";  echo "<a href='news/10/آموزش عوض !!! آدرس در url'> آموزش عوض !!! آدرس در url a>br>"; echo "<a href='$address"."news/10/آموزش عوض !!! آدرس در url'> آموزش عوض !!! آدرس در url a>"; } ?> 

خوب ببینین با کدی که من نوشتم آدرس رو گرفتم و با دستور explode بهش گفتم هرجا / رو دید جدا کنه و با !!! س ها مقدار رو بگیره. من برای راحت تر !!! کار شما آدرس رو گرفتم و explode !!! و تو حلقه for گذاشتمش و هر دفعه یه مقدار رو چاپ کنه تا برای شما قابل فهم باشه و یه مثال خیلی ساده اخبار برای شما زدم.

اینکه شما url رو چجوری پردازش کنین به خودتون مربوطه ولی توصیه میکنم سعی کنین url ور بیش از حد طولانی نکنین برای اینکه خودتون گیچ میشین.

نکته خیلی مهم : وقتی شما از این روش برای ساییتون استفاده میکنین حتما قالب ساییتون بهم میریزه و فایل های css , javascript  و ع !!! اتون لود نمیشه این دلیلش اینکه شما از آدرس های غیر مستقیم استفاده میکنین مثل  files/css/style.css و اگه کاربر هم در آدرس example.com/news/1/test رو وارد کنه آدرس فایل css شما میشه example.com/news/1/test/files/css/style.css برای همین کل فایل های css , javascript و ع !!! و لینکاتون رو با آدرس های مستقیم استفاده کنین مثل http://example.com/files/css/style.css اینجوری دیگه قالب ساییتون به هم نمیریزه. بالا واستون مثل زدم و اگه اجرا کنین میفهمین مشکل کجاس.

اگه پروژه یا سایتتون تو چند تا سرور و لوکال هست حتما آدرس دهی رو داینامیک یا شی گرا کنین که مجبور نشین پروژه یا ساییتون رو هر موقع جابجا کردین آدرس دهی فایل هاتون رو دوباره با توجه به اسم سایت یا سرور عوض کنین.

نکته : این مشکل آدرس دهی رو که بالا گفتم شامل کدهای php مثل include و require و ... نمیشه.

امیدوارم با مثالی که زدم کامل فهمیده باشید .