Ehsaan

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

1 پست در این موضوع قرار دارد

آموزش ساخت 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 را در اختیار دارد.

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

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

موفق باشید.

12

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط mory_fun
      سلام دوستان
      یک دامین جدید برای سایتم ادد کردم و بقیه رو به این شکل ریدایرکت کردم درسته ؟
      RewriteEngine on RewriteCond %{HTTP_HOST} ^www.old.ir [NC,OR] RewriteCond %{HTTP_HOST} ^old.ir [NC] RewriteCond %{HTTP_HOST} ^www.new.xyz [NC] RewriteRule ^(.*)$ http://new.xyz/$1 [L,R=301,NC]  
    • توسط naderi
      سلام .. برای توسعه یک وب سایت با قالب Eduma وردپرس میخوایم یه سری قابلیت ها رو بهش اضافه کنیم .. از دوستان کسی هست که بتونه به ما کمک کنه؟
    • توسط s.m.a1383
      سلام می خواستم ببینم به جای اینکه محصولات رو توی صفحه اول سایت بگذارم میشه دسته های محصولات رو توی صفحه اول سایت گذاشت؟
      آدرس سایت من:innolabs.ir
      در ضمن از پوسته "هستیا "استفاده میکنم افزونه یا کدی هست که بتونه به جای نمایش محصولات در صفحه اول دسته های محصولات رو نمایش بده در ضمن هر کد یا افزونه ای که گفتید طریقه انجامش رو هم بگید لطفا.
      خیلی ممنون از لطفتون
    • توسط resanehwp
      دوستانی که می خوان قلاب های ووکامرس و ترتیب اجرای اونها رو یاد بگیرن
      در لینک زیر صفحه آرشیو محصولات رو می تونید بررسی کنید
      http://bit.ly/rhwp1006
    • توسط centralfile
      سلام دوستان من افزونه wp original media path رو نصب کردم تنظمات مربوطه رو انجام دادم.
      یک ساب دامنه برای سایت ایجاد کردم.
      فایل های مربوط به پوشه uploads/wp-content رو هم به ساب دامنه انتقال دادم  اما عکس ها و فایل ها هنوز تو سایت لود نشده.
      پیوند های یکتا رو هم بروز رسانی کردم ولی  مشکلی حل نشد!
      ساب دامنه ایجاد شده و فایل ها داخلش قرار گرفتند
      اینم اسکرین شات از تنظیمات افزونه
       
       
       
       
       
      ممنون میشم کمک کنید.