در مورد ماژول rewrite سوال دارم که چطور برای customize کردن url استفاده میشود.
سلام.
اگر ماژول rewrite داخل تنظیمات آپاچی، کامنت هست، از کامنت خارج کنید و آپاچی رو ریستارت کنید:
LoadModule rewrite_module modules/mod_rewrite.so
برای اینکه آدرسهای سایتتون رو اصطلاحاً user-friendly کنید، یک فایل .htaccess داخل روت پروژتون ایجاد کنید.
ابتدا با دستور زیر ماژول رو فعال کنید:
RewriteEngine On
در خطوط بعدی میتونید قوانین آدرس هاتون رو بذارید.
فرم کلیه قوانین به شکل زیره:
RewriteRule pattern substitution [flags]
pattern: این همون رشته ایه که کاربر داخل مرورگرش وارد میکنه و شما الگورو با regex مشخص میکنید.
substitution: مسیر اصلیه سایت هست. در واقع این آدرس در سایتتون وجود داره و pattern در صورت تطبیق، باید به این آدرس ریدایرکت شه.
flags: تعیین میکنه RewriteRule چگونه کار کنه.(رفتار rule رو مشخص میکنه و اختیاریه)
داخل پروژتون فایلی دارید به نام about.php:
اگر بخواهید این صفحه رو باز کنید، باید در مرورگر http://example.com/about.php وارد کنید.
حالا میخواهید به وب سرور آپاچی بگید، اگر about خالی هم تایپ شد، باز هم about.php باز شود:
RewriteEngine on
RewriteRule ^about$ about.php [NC]
pattern: مشخص میکنه که با a شروع بشه و در ادامه bout و با t تمام بشه. یعنی فقط کلمه ی about نوشته شده باشه. اگر الگو صحیح بود به about.php ریدایرکت شه.
* علامت $ انتهای url رو نشون میده. (در خود regex هم به معنی پایان الگو است.)
* فلگ NC بمعنای No Case هست و به حروف بزرگ و کوچیک حساس نیست.
با توجه به رول بالا، تمام آدرسهای زیر، به یک صفحه ختم میشه:
هر رشته ای با هر شکلی که در url نوشته شود بعنوان مقدار r پاس داده میشود.
یه سری دستورات دیگه هم وجود داره مثل RewriteCond که میتوانیم قبل از چک شدن یک رول، چندین Condition رو زیر هم بیاریم و در صورتی که شرطها برقرار بود، بره سراغ رول و ...
* تمام این مراحل داخل فایل کانفیگ سرور هم میشه انجام داد ولی ازونجا که اغلب سایتها روی هاستهای اشتراکی است که دسترسی به فایل اصلی تنظیمات وجود نداره و همچنین روی سیستم هم اغلب چندین پروژه روی ومپ سرور و ... ران میکنیم، بنابراین از فایل .htaccess استفاده میکنیم. این فایل، داخل فایل اصلی تنظیمات وب سرور، فراخوانی شده است.
موارد کلی رو بصورت کوتاه اوردم. برای اینکه بیشتر آشنا بشید، مقالات انگلیسی رو سرچ بزنید، توضیحات بیشتری پیدا میکنید.