رفتن به مطلب

ساخت URLهای زیبا با htaccess


پست های پیشنهاد شده

آموزش ساخت Pretty URLs

در این مقاله کوتاه قصد دارم نحوه ساختن URLهای زیبا (Pretty URLs) رو برای یه برنامه PHP خدمت شما دوستان عزیز توضیح بدم.

مزایای استفاده از Pretty URLs:

  • سئوی بهتر
  • اگه به هر دلیلی مجبور شدید اسم یه فایل رو توی یه اپلیکیشن تغییر بدید، با این روش دیگه نیازی به عوض کردن URLها در چندین فایل ندارین، فقط در فایل htaccess اونو تغییر میدین.
  • باعث میشه تا کاربرای متوسط راحت‌تر به متحوای سایت شما (فقط با تایپ کردن URL) دسترسی داشته باشن.
  • در کدنویسی PHP، شما میتونید تا 50% خیال خودتون رو از SQLI و ولیدیشن دیتا راحت کنید.

دقت کنین که این آموزش برای اسکریپت‌های PHP هست و نه وردپرس و سیستم‌های مشابه آماده.

نکته دیگه هم اینه که این آموزش فقط روی وب‌سرورهای Apache و وب‌سرورهایی که از htaccess ساپورت میکنن، جواب میده؛ علاوه بر این، سرور باید اجازه استفاده از ماژول Rewrite رو به شما بده. برای غیر از وب‌سرورهای Apache-Based، راه‌حل‌های دیگه هست که ان‌شاءالله در فرصت مناسبی اونا رو هم توضیح میدم.

برای شروع کار، میریم سراغ ساده‌تر نمونه، مثلاً شما صفحه‌ای دارید که با این URL قابل دسترسی هست:


http://site.com/aboutus.php

ساده‌ترین روش برای زیباکردن این URL، نوشتن یه رول ساده هست، البته فراموش نکنید که اول باید موتور Rewrite رو روشن کرد.


RewriteEngine on
RewriteRule aboutus aboutus.php

بعد از روشن‌کردن موتور، ابتدا باید عبارت RewriteRule رو بنویسیم که مشخص کنیم که در حال نوشتن یه عبارت Rewrite هستیم. بعد از اون؛ چیزی رو که میخوایم بهش تبدیل بشه رو مینویسیم و سپس بعد از اون با یه فاصله، اسم فایل اصلی و حقیقی رو مینویسیم.

می‌بینید که خیلی راحت میشه با استفاده‌کردن از این کد در فایل .htaccess، یه URL ساده رو زیباتر کنیم. حالا این صفحه از طریق URL زیر هم قابل‌دسترس خواهد بود:


http://site.com/aboutus

اما نمونه پیچیده‌تر:


http://site.com/view.php?id=#

صورت مسئله به ما میگه که به جای # یه عدد قرار میگیره و ما قصد داریم این URL رو به شکل زیر زیباسازی کنیم:


http://site.com/view/#

در این صورت استفاده از روش قبل، به هیچ‌عنوان پاسخگوی ما نیست، چون # میتونه مقداری متغیری باشه و روش قبل، صرفاً برای URLهایی به کار میرفت که کاملاً ثابت باشن.

در این صورت، ما باید از Regular Expressions استفاده کنیم [اگه نمیدونین چی هستن، به این پست مراجعه کنید.]

همونطور که میدونیم # عدد هست و نمیتونه کاراکتر باشه.

قبل از نوشتن دستور htaccess، اول عبارت منطقی رو مینویسیم.


^view/([0-9]+)?$

توضیح: ^ نماد شروع عبارت و $ نماد پایانیه. بعد از اون view/ رو مینویسیم. بعد از اون، ما عبارت ([0-9]+) رو داریم که یه عبارت شرطیه. ) و ( نشون‌دهنده یه عبارت منسجم هست که یعنی کلمات داخل این عبارت، کاری با بقیه ندارن). سپس یه مجموعه تعریف میکنیم: [0-9] یعنی هر کاراکتر از 0 تا 9 رو شامل بشه. کاراکتر + یعنی از این مجموعه، یکی یا بیشتر داشته باشیم.

کاراکتر ? در پایان هم به معنی URLبودن شرط ماست.

حالا شرط رو به RewriteRule میاریم.


RewriteRule ^view/([0-9]+)?$ view.php?id=$1

$1 به معنای جایگزینی این عبارت ($1) با اولین نتیجه شرط عبارتمون هست. مثلاً اگه یوزر به URL زیر بره:


http://site.com/view/1

به جای $1، اسکریپت PHP ما مقدار 1 رو دریافت میکنه.

به همین سادگی! شما حالا میتونید با این روش Pretty URL بسازید.


مثال دیگه

URL کنونی:


http://site.php/users.php?id=#∂=$

به جای # عدد (شماره کاربر) و به جای $ یک رشته (قسمت موردنظر) قرار میگیرد.

هدف:


http://site.com/users/#/$

عبارت:


RewriteRule ^users/([0-9]+)/(.+)?$ users.php?id=$1∂=$2

لزوماً ما مجبور به استفاده از یک شرط نیستیم و میتوانیم چندین شرط دیگر را وارد کنیم. برای تعیین مسیر فایل واقعی، از $x استفاده می‌کنیم که x از 1 آغاز میشود و به ترتیب تعریف شرط‌ها از چپ، افزایش می‌یابد. برای مثال در عبارت بالا، شرط عددی چون اول تعریف شده $1 و شرط حروف چون بعد از آن تعریف شده، $2 را در اختیار دارد.

--------------------------------

مثال‌های بیش‌تر رو خود دوستان بزنن!

موفق باشید.

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...