ارسال شده توسط بهروز پولادرگ در تاریخ: ۱۹ مرداد ۱۳۸۷
به URL فرضی پائین یه نگاهی بندازین…
http://yoursite.com/tutorials.php?req=tutorial&id=3&page=0
حالا یه نگاهی هم به این یکی بندازین…
http://yoursite.com/tutorials/3/0.php
حفظ کردن کدوم راحت تره؟! (ببخشید اگه زیادی خنگ بازی شد!)
mod_rewrite یکی از قابلیتهای web Serverها برای تبدیل کردن URLهایی با QueryStringهای طولانی به URLهای به اصطلاح User Friendly هست! (همشو انگلیسی مینوشتم سنگینتر بود!) با استفاده درست از این ماژول، حفظ کردن یه URL برای ویزیتورهای سایتتون به مراتب آسون تر میشه.
برای استفاده از mod_rewrite یه سری مقدمات لازمه. اینکه یا روی Serverتون اون رو نصب کرده باشین و دسترسی مربوط به تغییر دادن فایل httpd.conf رو داشته باشین، یا اینکه به Admin سایتتون بگین که اون رو فعال کنه. (که در خیلی از موارد هم فعال هست)
فرض رو بر فعال بودنش میگیریم و میریم سر اصل مطلب…
تمام کاری که باید انجام بدیم قراردادن یه سری تنظیمات در فایل htaccess. شبیه دو تا خط پائینه:
RewriteEngine On RewriteRule ^tutorials/(.*)/(.*).php/ tutorials.php?req=tutorial&tut_id=$1&page=$2
خط اول که چیز خاصی نداره. برای راه انداختن mod_rewriteه. بذارید یکی یکی قسمتهای رنگی خط دوم رو توضیح بدم.
قسمت قرمز رنگ برای Server این رو مشخص می کنه که ما داریم یه RewriteRule تعریف میکنیم. قسمت سبز رنگ به Server میگه که بعد از قرار دادن/tutorials/ ما دو تا جایگزینی داریم (علامتهای (*.) برای این کار هستن) که حالا در قسمت آبی رنگ بهت میگم چی باید به جاشون بذاری و این قسمتها رو به ترتیب با علامتهای ۱$ و ۲$ برات مشخص کردم. یه دونه php. هم به آخر ۲$ بچسبون!
پس به این ترتیب mod_rewrite با دو خط بالا می فهمه که URL زیر رو:
/tutprials.php?req=tutorial&tut_id=13&page=0
باید به این تبدیل کنه:
/tutorials/13/0.php
1 | sina
۱۲ اردیبهشت ۱۳۸۸ در ساعت ۱۲ اردیبهشت ۱:۴۱ ق.ظ
این mod_rewrite خیلی چیز مفیدی است.
لطفا به کد زیر توجه کنید:
RewriteCond %{HTTP_HOST} !^www\.name\.com$ [NC]
RewriteRule ^(.*) http://www.name.com/$1 [QSA,L,R=301]
این flag ها (تنظیمات) آخر دستورات چیه و طبق چه قائده ای نوشته میشوند؟
منظورم [NC] یا [QSA,L,R=301] و چیزای دیگه که بین [*] قرار میگیرن
لطفا یه منبعی برای درک اینها معرفی کنید من که هر چی گشتم چیزی در این مورد خاص پیدا نکردم!
2 | بهروز پولادرگ
۱۲ اردیبهشت ۱۳۸۸ در ساعت ۱۲ اردیبهشت ۹:۴۷ ق.ظ
به زودی مطلبی مفصل در این رابطه خواهم نوشت
mod_rewrite و Apache دنیایی داره واسه خودش