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

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


لینک به پست

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط p1touchbiz
      دراین مقاله سعی داریم که تعریف درست از دسته بندی در وردپرس و برچسب گذاری در وردپرس را داشته باشیم .  درسایت های وردپرسی این دو مفهوم بسیار به یکدیگر شبیه می باشند و در بسیاری موارد باهم دیگر اشتباه میشود .  درمجموع هردو این ها وظیفه اول و اصلیشان کمک به ایجاد یک سایت منظم و گویا برای مخاطب می باشد و به طور مستقیم روی سئوی سایت شما تاثیر ندارند .
      دسته بندی در وردپرس چیست ؟
      موضوعات اصلی سایت در دسته بندی ها جای میگیرد .
      مثلا مطالب سایت شما صرفا در مورد آشپزی و پزشکی میباشد .  پس سایت شما دو دسته اصلی دارد و میتواند زیر دسته های دیگری هم در هرکدام از این دسته های اصلی جای بگیرد .
      مثلا در دسته اصلی آشپزی چند زیر دسته ی دیگر میتواند وجود داشته باشد مانند فست فود ها ، دسر ها ، پیش غذاها و غیره.
      و شما میتوانید برای هردسته زیر دسته های دیگری درست کنید . و البته با تشکیل هردسته میتوانید مادر آن دسته را نیز مشخص کنید .
      اگر هر دو یا سه روز یکبار در مورد یک موضوع خاص نوشته ایجاد میکنید و تعداد قابل توجهی از نوشته های سایت شما مربوط به آن موضوع میشود برای آن موضوع باید دسته بندی ایجاد کنیم .
      برای ایجاد دسته بندی در پنل وردپرس سایت خود درستون سمت راست درقسمت نوشته ها میتوانید روی دسته ها کلیک کنید .
       
       

       
       
      برچسب گذاری در وردپرس چیست ؟
      برای برچسب گذاری در وردپرس زمانی که پیرامون یک موضوع جزیی تر مطالبی دارید و تعداد این مطالب آنقدر زیاد نیست و البته خود آن موضوع فرعی و آنقدر کلی نباشد که بخواهید برای آن دسته تشکیل بدهید میتوانید یک برچسب مشترک برای آن مطالب ایجاد کنید .
      به عنوان مثال در دسته بندی آشپزی شما چند نوشته پیرامون فواید و خواص سبزی ایجاد کرده اید و برچسب فواید میوه و سبزی را برای آن گذاشته اید .
      حالا شخصی که روی این برچسب کلیک کند میتواند تمامی نوشته هایی که این مضمون را درخود دارند و مربط به آن میباشد را مشاهده کند .
      به طور کلی اگر بیشتر از ۵ تا ۱۰ نوشته پیرامون یک مطلب ارسال کرده اید برای آن برچسب جداگانه تشکیل دهید .
      امیدوارم این مقاله به شما کمک کرده باشد و ممنون میشم اگه نظرات خودتون را پایین مقاله برای ما ارسال کنید .
       
      آموزش ویدئویی وردپرس در ۳ روز را اینجا ببینید .
      برای آنالیز سئو سایت خود اینجا کلیک کنید .
    • توسط behnamstar
      سلام و عرض ادب
      من یه سایت وردپرسی دارم که به تازگی تغییر دامنه روش انجام دادم که بعد ازینکار مشکل عجیبی اتفاق افتاده 
      من دامنه ی https://damane1.co m رو ریدایرکت کردم به https://damane2.co m الان اتفاقی که میفته دامنه 1 ریدایرکت میشه روی دامنه 2 
      ولی زیر دامنه ها ریدایرکت نمیشن 
      مثلا روی این لینک کلیک بشه (https://damane1.co m/linksite) باید این لینک باز شه (https://damane2.co m/linksite)
      ولی این لینکها جدا جدا باز میشن 
      فقط دامنه https://damane1.co m روی https://damane2.co m ریدایرکت میشه بقیه ی لینک ها همه جدا جدا باز میشن.
      ممنون میشم از دوستان کمک کنن 
      حتی به هاست پشتیبانی هم تیکت دادم ولی متوجه مشکل نشدن.
    • توسط hatef
      سلام دوستان
      خسته نباشید من پسرم 15 سالشه و عاشق کامپیوتر و برنامه نویسی مخصوصا طراحی سایته. متاسفانه آموزش برنامه نویسی برای بزرگسالان زیاده اما منی که برای کودکان میخوام اصلا نیستش شما ها که همگی واردید در این زمینه آیا سایتی میشناسید که بتونه برای کودکان برنامه نویسی رو ساده و در حد خودشن یاد بده؟
      البته یکی دوتا سایت هستش برای کودکان که آموزش های زیادی دارن بعد آموزش برنامه نویسی هم دارن اما الان دقیق نمیتونم لینکشو بدم چون پیداش نمیکنم اما آدرس کلی سایتشونو میدم اگزر چک کنید هستش توش. معرفی کنید ممنون میشم.
       
      این سایت آموزش های همه چی در مورد کودکان داره ولی لینکه برنامه نویسشو پیدا نمکینم:
      https://kodakanema.com/
       
      این سایتم که خیلی معروفه اینم هستش.
      https://www.ninisite.com/
      یکی دیگه هم هستش اسمش فرادرسه اما نمیدونم چجوریه
      https://faradars.org/courses/fvsch9503-scratch-visual-programming-for-children
    • توسط Streetlife
      سلام دوستان گرامی و متخصصان
      بنده یک سوال مهم و یک راهنمایی از اساتید نیازمندم
      میخوام به یک سایت وردپرسی به صورت پاپ اپ یک صفحه نطرسنجی رو اضافه کنم.نظرسنجی به صورت پاسخ دلخواست و میخام کاربر وقتی میخواد کلمه ی مورد نظر که از محصولات سایت هستش رو تایپ میکنه با نوشتن قسمتی از اون به صورت پیشنهادی کلمات مشابه رو نشون بده مثل گوگل
      هرچی گشتم چیزی رو پیدا نکردم خواهشمندم راهنمایی بفرماااییید
    • توسط nima-kian
      سلام دوستان مدتی هست که داخل هاست سایت بنده فایل error_log حجم خیلی زیادی اشغال میکنه. php_flag log_errors Off این کد رو اضافه کردم فعلا مشکل حل شده
      فایل .htaccess رو دیدم یکسری کد بهش اضافه شده میتونید راهنمایی کنید که این کد ها چه کاری رو انجام میدن؟

      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteRule ^\/(homodyne)([0-9]+)-([0-9]+)\/$ ?homodyne$2=$3&%{QUERY_STRING}[L]
      RewriteRule ^index\.php$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]
      </IfModule>
      # END WordPress
      # BEGIN Compress text files
      <ifModule mod_deflate.c>
      <filesMatch "\.(css|js|x?html?|php|woff|ttf|png|jpg|gif)$">
      SetOutputFilter DEFLATE
      </filesMatch>
      </ifModule>
      # END Compress text files
      # Set Expires headers
      ExpiresActive On
      ExpiresDefault "access plus 1 years"
      ExpiresByType text/html "access plus 1 second"
      ExpiresByType image/gif "access plus 2592000 seconds"
      ExpiresByType image/jpeg "access plus 2592000 seconds"
      ExpiresByType image/jpg "access plus 2592000 seconds"
      ExpiresByType image/png "access plus 2592000 seconds"
      ExpiresByType image/x-icon "access plus 2592000 seconds"
      ExpiresByType text/css "access plus 604800 seconds"
      ExpiresByType text/javascript "access plus 604800 seconds"
      ExpiresByType application/x-javascript "access plus 604800 seconds"
      php_value upload_max_filesize 64M
      php_value post_max_size 64M
      php_value max_execution_time 300
      php_value max_input_time 300