رفتن به مطلب

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

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


  • مطالب مشابه

    • توسط asadiy4n
      1 - Multisite چيست؟
      از زمان انتشار نسخه ی 3.0 وردپرس در تاریخ 17 ژوئن 2010 میلادی وردپرس حاوی یک ویژگی موسوم به چندکاربره (Multisite) می باشد. این در حالی است که قبل از آن چند کاربره یک محصول مجزا بود و با عنوان اختصاری WPMU عرضه می شد. از زمان انتشار نسخه 3.0 تصمیم بر آن شد که ویژگی چندکاربره در دل ورپرس پیاده سازی شود و امکان تغییر از حالت ساده به حالت چند کاربره را بر روی سیستم نصب شده جاری و بدون نصب چندین سیستم وردپرس در کنار هم میسر سازد.
      ویژگی چندکاربره به شما اجازه می دهد تا چندین سیستم دیگر را از سیستم برپا شده مرکزی منشعب کنید و آنها را در پوشه های دیگر و یا زیر دامنه هایمد نظر مستقر کنید. در این حالت نام قراردادی شبکه به کل سیستم اطلاق شده و هر یک از وبلاگ ها یا سیستم های منفرد با عنوان سایت شناخته می شوند. به هنگام بهره گیری از ویژگی چندکاربره تنها یک نسخه از افزونه ها و پوسته ها به همراه تنها یک دیتابیس موجود خواهد بود و نیازی به تهیه چندین نسخه همسان نیست.
      شبکه فوق را می توان یک محیط اداره کردن سایت های مجزا تلقی نمود که در آن هر سایت در فضای مختص به خود با کاربران، افزونه ها و پوسته هایش به حیاتش ادامه می دهد. این موارد اختصاصی به معنای تهیه و درج چندین نسخه مجزا نیست، بلکه هر سایت با نمونه سازی از نسخه موجود در فضای خود به نیاز خود پاسخ می گوید. در این شبکه امکان به اشتراک گذاری محتوای سایت ها با یکدیگر وجود دارد، اما این امر یک ویژگی پیشرفته محسوب می شود و نیازمند کسب مهارت است.
      یک مثال خوب جهت به تصویر کشیدن شبکه وردپرس همان سرویس وبلاگ دهی wordpress.com می باشد که هر یک از سایت های آن با آدرسی مشابه آدرس http://example.wordpress.com در اختیار کاربر قرار می گیرد. این حالت مشابه عملکرد سرویس های وبلاگدهی وطنی همچون میهن بلاگ و بلاگفا می باشد. در محیط چندکاربره وردپرس در حالیکه هسته وردرپرس (سرس کد) به اشتراک گذاشته می شود، تنظیمات متفاوتی برای هر سایت وجود خواهد داشت.
      2 - عبارت های ویژه
      چندين عبارت اضافه ديگر در وردپرس چندكاربره موجود است كه لازم است با آنها آشنا شويد. عبارات مذكور در ادامه بر شمرده خواهند شد  .
      مدير ارشد يا مديركل (Super Admin) -  يك مدير ارشد كه همچنين به عنوان مدير شبكه شناخته مي شود كسي است كه به كل شبكه و تنظيمات آن دسترسي دارد و مي تواند كاربران، افزونه ها و پوسته ها را اضافه يا حذف كند و در يك كلام مي تواند هر كاري را كه مايل باشد انجام دهد. اين دسترسي در حين فعال سازي ويژگي چندكاربره از جانب وردپرس بر اساس حساب كاربري كه اعلام مي كنيد ايجاد مي شود و مي توان در آينده حساب هاي كاربري مشابهي را ايجاد نمود. لازم است تا در اعطاي دسترسي مدير ارشد احتياط لازم را به عمل آورده و شخص نا اهل را به اين حريم راه ندهيد. 
      شبكه (Network) -  همان طور كه پيش تر اشاره شد عبارت شبكه به كل مجموعه سايت هاي شما اشاره دارد .
      سايت (Site)  - هر يك از وبلاگ هاي منفرد موجود در شبكه به عنوان يك سايت تلقي مي شود. البته لازم نيست كه هر سايت واقعا شبيه يك وبلاگ عمل كند، منتها به دلايل تاريخي به هر عضو اين مجموعه عنوان سايت اطلاق مي شود.
      سايت اصلي (Main Site)-  سايت اصلي كه فرايند نصب را با آن آغاز كرده و به طور معمول از طريق آدرس http://example.com قابل دسترسي است. اين سايت در ديتابيس با شناسه شماره 1 شناخته مي شود و مي تواند درگاهي به ساير سايت ها باشد. 
      زير سايت ها (Sub Sites)- به طور كل صرف نظر از اينكه سايت ها در يك پوشه يا زير دامنه ميزباني شوند به مجموعه آنها از ديد بالا عبارت زير سايت ها اطلاق مي شود. 
      3 - محدودیت ها
      پيرو مطالب بخش قبلي لازم است يادآوري شود كه در شرايطي خاص امكان برپايي شبكه اي از سايت ها وجود ندارد و ما با محدوديت هايي مواجه خواهيم شد. يكي از اين محدوديت ها برپا سازي وردپرس چندكاربره در وب سرور محلي و كامپيوتر شخصي شما است كه از آن جهت آزمودن استفاده مي كنيد. همانطور كه پيش تر گفته شد آدرس دسترسي به سايت نمي بايست با آدرس قرار گيري وردپرس متفاوت باشد. در سرور محلي هر سايت مجزا در يك پوشه قرار مي گيرد و از طريق http://localhost/folder در مرورگر بار گذاري مي شود. اين در حاليست كه ما نياز داريم آدرس دسترسي صرفا http://localhost بوده و هيچ مسير مازادي در ادامه آدرس نباشد.
      در صورت نصب وردپرس در پوشه اي مجزا امكان داشتن ويژگي چند كاربره مبتني بر زير دامنه وجود ندارد. 
      اگر در وب سرور محلي شما پورت تخصيص داده شده به وب، غير از پورت شماره 08 باشد امكان برپايي حالت چند كاربره وجود نخواهد داشت. از طرفي چنانچه آدرس سايت در سرور محلي ، آدرس IP همچون 127.0.0.1 باشد با مشكلاتي مواجه خواهيد شد. 
      امكان تغيير از حالت زير دامنه اي به پوشه اي و بالعكس در زمان هاي بعد وجود دارد، اما بهاي اين تغيير داشتن صبوري و حوصله جهت اعمال دستي تغييرات در بانك اطلاعاتي وردپرس مي باشد. امري كه چندان آن را توصيه نمي كنيم. 
       
      پرسش های متدوال
      آيا تمايزي بين مديريت شبكه و مديريت يك سايت وردپرسي وجود دارد؟ 
      در حقيقت بله. زمانيكه شما يك سايت وردپرسي معمولي را برپا مي كنيد هم مديركل آن هستيد و هم مدير آن! تمايز در زماني آشكار مي شود كه يك شبكه موجود باشد. در حالت شبكه مدير كل بر كل شبكه احاطه دارد و هر يك از زير سايت ها يك مدير متمايز با قابليت هاي كمتري به نسبت مدير كل دارند. مدير يك زير سايت موجود در شبكه حتي قابليت هاي كمتري به نسب مدير يك سايت  وردپرسي معمولي و غير شبكه دارد. اين مورد در بند هاي قبلي در بررسي افزونه ها و پوسته به وضوح بررسي شد. به طور كلي مدير يك زير سايت موجود در شبكه از قابليت هاي زير برخوردار نيست: 
      او نمي تواند آدرس (URL) سايت خود را تغيير دهد.  او نمي تواند محل قرار گيري فايل هاي چند رسانه اي آپلود شده را تغيير دهد.  او قادر به درج كد هاي نمايش دهند ويدئو ها (يوتيوب و ...) از سايت هاي ديگر در سايت خود نيست. او نمي تواند مطلبي جديد از طريق ايميل به سايت خود ارسال كند.  او نمي تواند افزونه يا پوسته جديدي نصب كند. وي تنها محدود به افزونه ها و پوسته هاي از پيش نصب شده است.  او قادر به ويرايش سرس كد افزونه ها و پوسته ها نيست. پيشنهاد مي شود براي رفع اين محدوديت از افزونه روبرو استفاده كنيد. http://codex.wordpress.org/Embeds  
      سايت هاي من كجا هستند؟ آنها را بر روي سرور نمي بينم! 
      منظور سوال فوق اين است كه چرا پوشه هاي مجزايي براي زير سايت من بر روي سرور وجود ندارد. پاسخ سوال فوق اين است كه تمامي پوشه هاي متعلق به يك زير سايت مجازي مي باشند. مشابه حالتي كه هيچ فايل متناظري براي هر يك از نوشته هاي سايت بر روي سرور ديده نمي شود و تمامي آن ها در ديتابيس ذخيره مي شوند، اين جا نيز به همان ترتيب عمل مي شود. تنها فايل هاي موجود بر روي سرور كه به تفكيك هر سايت قابل دسترسي است همان فايل هاي چند رسانه اي آپلود شده مي باشند. 
      فايل ها همگي در يك پوشه آپلود مي شوند، اما چرا با آدرسي مجزا از ساير سايت ها ديده مي شوند؟ 
      پاسخ سوال بالا در جادوي تنظيمات مندرج در فايل .htaccess نهفته است. در حقيقت تمامي فايل ها در پوشه اي مشابه پوشه زير ذخيره مي شوند: 
      /wp-content/blogs.dir/#/files اما به كمك دستورات فايل .htaccess به آدرس هايي مجزا همانند زير تبديل مي شوند: 
      example.com/blogs.dir/2/files آيا مي توان يك سايت معمولي وردپرسي را تبديل به يك سايت چند كاربره يا شبكه نمود؟ 
      پاسخ سوال بالا مثبت است. اما به شرطي كه احتياط هاي لازم را انجام دهيد.  
      اولين مورد آن است كه اگر عمر سايت معمولي و فعلي شما بيش از 06 روز باشد و حالت برپا سازي بر مبناي زير دامنه را انتخاب كرده باشيد، وردپرس به جهت جلوگيري از تداخل آدرس هاي سايت اصلي شما با زير سايت ها شما را از اين كار منع خواهد كرد. البته مي توان اين مورد را با دستوراتي كه در فايل wp-config.php درج مي شود بر طرف نمود. 
      از سوي ديگر عبارت /blog/ در آدرس دسترسي به نوشته ها قرار خواهد گرفت كه ممكن است در تداخل با تنظيمات قبلي شما سبب نمايش خطاي 404 شود. اين بار نيز مي توان با اصلاح دستورات مندرج در فايل .htacess اين مورد را برطرف نمود. 
      چرا پوسته هاي زير سايت ها به درستي ديده نمي شوند؟ 
      چنانچه پوسته هاي زير سايت ها به درستي ديده نمي شوند و تنها مطالب مندرج در آن ها به صورتي نا زيبا و در هم ديده مي شود بايد از عملكرد صحيح فايل .htaccess اطمنيان حاصل كنيد. در بخش هاي ابتداي اين نوشتار مطالبي در باب به كار گيري صحيح اين فايل بيان شد. در صورتيكه از صحت عملكرد و تنظيمات فايل .htaccess اطمينان داريد و كماكان مشكل عدم نمايش پوسته ها به قوت خود باقي باشد بايد سري به فايل httpd.conf زده و از بابت مقدار گزينه AllowOverride كه مي بايست بر رويAll  باشد اطمينان حاصل كنيد. 
      ديتابيس سايت من در صورت استفاده از حالت چند كاربره چقدر بزرگ و حجيم مي شود؟ 
      پاسخ بستگي به شرايط و ديدگاه شما دارد. پس از ايجاد هر زير سايت جديد دست كم نه جدول جديد به ديتابيس شما اضاف خواهد شد. اين روند در صورتي كه ويژگي نام نويسي براي عموم فعال باشه به صورت تصاعدي سبب افزايش تعداد جدول ها خواهد شد. البته بسياري از كاربران محتواي زيادي توليد نمي كنند، اما اين مورد نبايد سبب غفلت شما شود. لازم است تا مهياي بهينه سازي سرور بانك اطلاعاتي خود در صورت تشديد ترافيك و تعدد كاربران باشيد. 
      سرور من چقدر بزرگ خواهد شد؟ 
      جواب اين سوال مشابه سوال قبلي بستگي به تعداد كاربران شما و حجم فايل هاي آپلودي آن ها دارد. اين بار نيز مي بايست تمهيدات لازم را براي پذيرا بودن انبوهي از فايل ها را انديشيده باشيد. روند اشغال فضاي سرور توسط فايل هاي آپلودي به سرعت از فضاي در دسترس شما خواهد كاست. 
      آيا ويژگي چند كاربره سرور من را كند خواهد كرد؟ 
      در عمل مي تواند چنين باشد. در صورتي كه به تنظيمات مربوط به بهينه سازي سرور بي توجه باشيد و از مهارت لازم براي مديريت حجم انبوهي از اطلاعات برخوردار نباشيد با مشكلاتي در باب كندي سرور مواجه خواهيد شد. در اين ميان بهره گيري از افزونه هاي بهينه سازي و كش (Cache) كردن ضروري است. 
      از كجا مطمئن شوم كه مي توانم يك افزونه را در محيط چندكاربره خود نصب كنم؟ 
      اگر افزونه مد نظربرچسب wpmu يا چند كاربره را در مخزن افزونه هاي رسمي وردپرس يدك بكشد مي توانيد از عملكر صحيح آن اطمينان حاصل كنيد. حال اگر چنين نبود مي بايست قبل از فعال سازي آن دست به آزمون خطا زده و از عملكرد آن اطلاع يابيد. البته توصيه مي كنيم كه مطالعه دقيق راهنماي همراه هر افزونه را فراموش نكنيد. 
      آيا مي توان يك كتابخانه چند رسانه اي اشتراكي در ميان تمام زير سايت ها داشت؟ 
      خير. در حال حاضر چنين امكاني موجود نيست و تا كنون هيچ افزونه اي براي اين كار ساخته نشده است. چنين مورد فراتر از حوزه حالت چند كاربره مي باشد.
      در صورت نياز به كمك و راهنمايي هاي بيشتر به كجا مراجعه كنم؟ 
      انجمن رسمي وردپرس چند كاربره به آدرس
      http://wordpress.org/support/forum/multisite
      انجمن پيشتيباني به زبان فارسي به آدرس
      http://wp-parsi.com/support
       
      منبع و آموزش نصب در فایل ضمیمه
      WordPress-Multisite.pdf
    • توسط Black_Sky
      با سلام خدمت دوستان
      در این آموزش قصد دارم درباره زبان جاوا اسکریپت آموزش بدم
      این آموزش نوع آموزش ها در فضای مجازی بسیار وجود دارد اما قرار هست تفاوت های بسیاری وجود داشته باشد
      خب ابتدا :
      1-در این تاپیک اسپم ندهید و یا سوال نفرمایید /سوال و جواب در تاپیک جداگانه مطرح کنید تا بقیه دوستان استفاده کنند
      2-آموزش ها پیوسته میباشند و در آخر به صورت یک فایل PDF در اختیار دوستان قرار میگیرد
      3-یک سری پیش نیاز هم لازم هست همانند : HTML
      4-اگر هر نوع پیشنهاد و یا انتقادی هم وجود دارد با بنده در ارتباط باشید
      5-دوستانی هم که میخواهند در این تاپیک همکاری کنند اعلام نمایند
      --------------------
      موفق باشید
      ---------------------
    • توسط madish
      سلام وقت بخیر یه سوال داشتم اگر بتونین کمک کنید ممنون میشم
      ببینید من یه لیست باز شو شرطی میخام که بدون دکمه تایید یا ارسال باشه بع این صورت که کاربر وقتی لیست رو باز کرد روی هر گزینه کلیک کرد یه لینک براش باز شه
      ساده تر میتونم بگم
      لیست شرطی که بلافاصله از انتخاب (بدون دکمه تایید یا ارسال) یه لینک جدید باز شه
      مث صفحه اصلی سایت اچاره با یه تفاوت های ریز
      اینو چطور میتونم با وردپرس پیاده کنم ؟
      افزونه یا چیزی هست ؟
      ممنون میشم راهنمایی کنین
    • توسط 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 وردپرس میخوایم یه سری قابلیت ها رو بهش اضافه کنیم .. از دوستان کسی هست که بتونه به ما کمک کنه؟
×
×
  • اضافه کردن...