50درصد تخفیف سورس فروشگاهی دیجی کالا + اپلیکیشن اندروید تا پایان این هفته - کد تخفیف : off50
با تخفیف میخرم

ساخت URL های دلخواه و سئو شده در php

ساخت URL های دلخواه و سئو شده در php

با ساخت URL های دلخواه و سئو شده میتوانید رتبه خود را در نتایج موتور های جستجو بهبود ببخشید . همچنین ساخت آدرس های url سئو شده و خوانا به مخاطب نشان می دهد که محتوای این صفحه چیست . همچنین باعث زیبایی و نظم مطالب سایت شما می شو د . دو آدرس URL معمولی و سئو شده را دز مثال زیر میبینید

  • URL معمولی : http://netparadis.com/index.php?p=123
  • URL سئو شده : http://netparadis.com/generate-seo-friendly-url-in-php

کاملا واضح است که URL سئو شده کاربر پسند تر از از url معمولی است . همچنین ساخت URL های دلخواه و سئو شده  به کاربر یک آگاهی کلی از اینکه در حال کلیک و باز کردن چه صفحه وب ی هستند, می دهد .

اگر قصد دارید که رتبه خود را در نتایج جستجوی گوگل و دیگر موتور های جستجو بالا ببرید , نیاز دارید که حتما تغییری در url های صفحات سایت و مقالات خود با ساخت URL های دلخواه و سئو شده ایجاد کنید .

به این تغییر آدرس صفحات به اصطلاح URL Rewriting می نامند . بسیاری از فریمورک ها از .htacces و مود rewrite برای تغییر آدرس های url استفاده می کنند .

همچنین سیستم مدیریت محتوای وردپرس نیز از این قابلیت استفاده می کند به اینصورت که برای هر پست یک عبارت قابل فهم و یکتا به نام slug اختصاص می دهد  و آن را در دیتابیس ذخیره می کند . زمانی که عبارت مورد نظر , که حالا می تواند اسم مقاله یا هرچیزی که شما تعیین کردید باشد ,  درخواست می شود . پست مورد نظر از دیتابیس خوانده و به نمایش می دهد . قوانین rewrite آدرس url وردپرس در فایل .htaccess نیز قابل دسترس است.

مثلا برای تغییر آدرس http://netparadis.com/ index.php?id=netp به http://netparadis.com/netp از فایل .htaccess به اینصورت استفاده می کنیم :

در این آموزش , قصد داریم به شما نحوه تغییر url و ساخت URL های دلخواه و سئو شده در php همانند آدرس های صفحات وردپرس را نشان بدیم . اسکریپت php ما شما امکان تبدیل عنوان مطلب به url های اختصاصی را میدهد . ما همه کد های php لازم را در یک تابع به اسم generateSeoURL() جمع کردیم .

تابع generateSeoURL() به طور خودکار یک عبارت تمیز و منظم برای url می سازد .

تابع php ساخت URL های دلخواه و سئو شده

تابع generateSeoURL() به عنوان ورودی یک رشته که عنوان مطلب باشد را دریافت می کند و url های human-friendly با یک “-” (خط تیره – dash) به عنوان جدا کننده کلمات , ایجاد می کند .

  • $string –  الزامی* – رشته ای که قصد تبدیل آن به آدرس url سئو شده دارید .
  • $wordLimit – اختیاری – ایجاد محدودیت برای طول url . به طور پیش فرض ۰ است .

برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود

نحوه استفاده

عنوان مقاله یا کلمه مورد نظر را به عنوان اولین پارامتر تابع generateSeoURL() پاس بدید . اگر قصد دارید تعداد کلمات را در url محدود کنید , می توانید عدد مورد نظر را برای حذف مقادیر اضافه به عنوان پارامتر دوم وارد کنید .

ساخت URL های دلخواه و سئو شده بدون محدودیت کلمه :

ساخت URL های دلخواه و سئو شده با محدودیت کلمه :

ساخت URL های دلخواه و سئو شده با این روش بسیار کارآمد و ساده می باشد و به طبع باعث افزایش رتبه شما در نتایج گوگل و همچنین منظم بودن آدرس صفحات شما می شود . سعی کنید حتما و حتما اگر یک cms اختصاصی می نویسید یا اینکه در حال انجام یک پروژه هستید این قابلیت را در پروژه پیاده سازی کنید .

هر سوالی داشتید ، از قسمت نظرات اقدام کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید

حسن شفیعی علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم

آموزش های رایگان بیشتر در اینستاگرام ما ...

NETPARADIS /
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۲۷)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. hh ۱۰ آبان ۱۳۹۹

    سلام
    url فارسی رو چطور با php میسازن؟؟؟؟

    پاسخ
    1. حسن شفیعی ۱۱ آبان ۱۳۹۹

      سلام. بفرمایید
      preg_replace(‘/&([^#])(?![a-z]{1,8};)/i’, ‘&$1’, $title);
      موفق باشید.

      پاسخ
  2. احسان ۲۶ تیر ۱۳۹۹

    سلام می خواستم به url سایت و قسمت ووکامرس post id اضافه کنم تا محصولات که نام های یکسان دارند تکراری نشه و توی قسمت پیوند های یکتا > پایگه سفارشی به این صورت وارد کردم: /product/%post_id%/
    یه مشکل که اینجاست من تعداد زیادی الان محصول دارم و زمانی که اینو ووارد کردم چند ساعت اول محصولات با لینک قبلی ۴۰۴ بودن ولی الان اگه لینک قبلی هم بزنم ریدایرکت میشه به صفحه جدید بصورت خودکار و من هیچکاری برای ریدایرکت نکردم. می خواستم بدونم این موضوع باعث افت سئو میشه و یا اینکه ربات های گوگل ۴۰۴ تشخیص میدند با اینکه خود به خود صفحات ریدایرکت شدن؟
    ممنون

    پاسخ
    1. حسن شفیعی ۲۶ تیر ۱۳۹۹

      سلام. بله در سئو تاثیر داره ولی به مرور دوباره اوکی میشه و سعی کنید داخل گوگل کنسول هم ثبت کنید

      پاسخ
  3. امیر ۲۳ تیر ۱۳۹۹

    سلام آقای شفیعی ممنون از آموزش خوبتون یه سوالی داشتم من الان تونستم این یو ار الو :
    mywebsite/post.php?postid=98
    تبدیل به این یو ار ال کنم :
    mywebsite/post/98
    الان میخوام تایتل پست بزارم تو بخش :
    mywebsite/post/98/title-post
    این کارو تو htaccess به چه روشی انجام بدم .پارامتر ایدیو با گت گرفتم و تایتلم میتونم به این روش بگیرم :
    mywebsite/post/98/?&mytitle=amozeshe sakhte url delkhah
    ولی نمیتونم به این تبدیلش کنم :
    mywebsite/post/98/amozeshe-sakhte-url-delkhah – یا این : mywebsite/post/amozeshe-sakhte-url-delkhah
    تو این روش مث یو ار ال خودتون آیدی هم نشون داد نمیشه که خیلی قشنگه
    mywebsite/post/amozeshe-sakhte-url-delkhah
    خیلی ممنون میشم کمکم کنید مرسی

    پاسخ
    1. حسن شفیعی ۲۳ تیر ۱۳۹۹

      سلام.
      شما باید در فیلدهایی که میخواین قرار بگیره مثلا آیدی پست قرار بگیره باید داخل htaccess بزارید که فقط عدد باشه با \d و ادامش که slug پست هست هم باید اختیاری بزارید. در کل کمی regex یاد بگیرید این موارد رو به سادگی میتونید پیاده سازی کنید
      https://netparadis.com/regular-expression-regex-php
      منبع اصلی این الگو نوشتن هم اینجاست : http://httpd.apache.org/docs/current/mod/mod_rewrite.html

      پاسخ
      1. امیر ۲۳ تیر ۱۳۹۹

        اگه امکان داره یه راهنمایی خیلی کوچیک کنید متوجه میشم

        پاسخ
      2. حسن شفیعی ۲۵ تیر ۱۳۹۹

        بفرمایید به اینصورت استفاده کنید :
        RewriteRule ^post/([0-9]+)/([^/]+) /?postid=$1&title=$2

        پاسخ
  4. علی ۱۴ دی ۱۳۹۸

    سلام من می خوام این در این لینک product/index/test-or-text متن index رو که متد هستش رو حذف کنم دستوری هست در htacess

    پاسخ
    1. حسن شفیعی ۱۸ دی ۱۳۹۸

      سلام.
      به اینصورت تست کنید :
      RewriteEngine On
      RewriteRule ^/product/(.*)/test-or-text$ /product/test-or-text [L,QSA]
      موفق باشید.

      پاسخ
  5. امیر ۱۴ شهریور ۱۳۹۸

    من کد زیر که دادین تست کردم کار نکرد متاسفانه:
    RewriteRule (maskan)/([0-9]+) $1.php?id=$2 [L,QSA,NC]
    و این کد جایگیزین کردم و کار کرد
    RewriteRule ^(\d+)*$ /maskan/estate-moro.php?title=$1 [L,QSA,NC]
    فقط یک مشکل داره فقط اعداد نمایش میده اگر مقدار string قرار دهیم کار نمیکنه
    مشکل از کجا؟ممنون میشم اگر راهنمایی کنید

    پاسخ
    1. حسن شفیعی ۱۴ شهریور ۱۳۹۸

      در مورد regex جستجو کنید. میتویند آموزش regex در php را هم بخونید.
      به جای \d در بالا میتونید از .* استفاده کنید یا کنار \d یک \w هم اضافه کنید تا کاراکتر های لاتین هم خوانده بشه.
      موفق باشید.

      پاسخ
  6. امیر ۱۴ شهریور ۱۳۹۸

    سلام
    کد بالا برای index.php به درستی کا رمیکنه ولی صفحه ادامه مطلبم به ادرس moro.php وقتی داخل کد زیر ادرس از index.php به moro.php تغییر میدم:
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^/maskan/index.php
    RewriteRule ^(.*)$ /maskan/moro.php?id=$1 [L]
    با ارور Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to complete your request.
    روبه برو میشم الان باید کد های صفحه moro داخل صفحه index.php قرار بدم تا کار کنه؟راه حلی وجود نداره؟

    پاسخ
    1. حسن شفیعی ۱۴ شهریور ۱۳۹۸

      برای فایل داخل این فولدر باید به اینصورت استفاده کنید :
      RewriteRule (maskan)/([0-9]+) $1.php?id=$2 [L,QSA,NC]

      پاسخ
  7. امیر ۱۴ شهریور ۱۳۹۸

    سلام
    وقتی کد زیر داخل فایل htacces بذاریم:
    RewriteCond %{REQUEST_URI} !^/index.php
    RewriteRule ^(.*)$ /index.php?id=$1 [L]
    ۱
    ۲
    RewriteCond %{REQUEST_URI} !^/index.php
    RewriteRule ^(.*)$ /index.php?id=$1 [L]
    url زیر باید:
    https://site/index.php?id=5
    به شکل زیر شود:
    https://site/index.php/5
    الان کد گذاشتیم تبدیل نمیکنه؟

    پاسخ
    1. حسن شفیعی ۱۴ شهریور ۱۳۹۸

      سلام.
      اول کد باید به اینصورت انجین رو روشن کنید : RewriteEngine on
      پس اول کد
      RewriteEngine on
      قرار داده و بعد بقیه کد خودتون در ادامه بزارید.
      و بصورت http://site/5 فراخوانی می شود

      پاسخ
  8. اسماعیل ۲۴ تیر ۱۳۹۸

    سلام خسته نباشید، ممنون از مقله ی خوبتون.
    اگر ممکنه دقیقا توضیح بدید روش کار چطور هست.

    پاسخ
    1. حسن شفیعی ۲۴ تیر ۱۳۹۸

      سلام ممنون. توضیحات مورد نیاز در مقاله آمده. لطفا هرجایی نیاز به توضیح داشتید رو بفرمایید.
      موفق باشید.

      پاسخ
  9. حمید ۲۶ خرداد ۱۳۹۸

    سلام ممنون از سایت خوبتون…
    من با htaccess یه URL Rewrite بصورت زیر انجام دادم که همه چی درست کار میکنه و مشکلی نیست

    RewriteRule ^product\/([0-9]+)$ https://example/product.php?item=$1 [QSA,L]
    حالا تو صفحه product.php با استفاده از متد $_GET پارمتر item رو دریافت میکردم و برای نمایش محصولات از اون تو دیتابیس استفاده می کردم اما با URL Rewrite دیگه پارامتر item توسط متد $_GET دریافت نمیشه لطفا راهنماییم کنید. تشکر

    پاسخ
    1. حسن شفیعی ۲۶ خرداد ۱۳۹۸

      سلام. در اینجا نیاز است که کمی روت بندی routing کنید یا اینکه با explode مقدار url را بصورت / جدا کنید و مقدار نهایی که برای itemid هست رو دریافت کنید و نباید مستقیما از $_GET استفاده کنید.

      پاسخ
  10. حمید ۳۰ بهمن ۱۳۹۷

    سلام
    دستورات رو اجرا که میکنیم خب یه خروجی داره اما چطوری این خروجی رو باید جای URL بشونیم؟ من تابع رو اجرا میکنم اما URL تغییر نمیکنه!!

    پاسخ
    1. حسن شفیعی ۳۰ بهمن ۱۳۹۷

      سلام. شما باید خروجی لینک خود را در دیتابیس ذخیره کنید و بعد آن را مثل index.php?id= که مشخص شده در کد php دریافت و در دیتابیس جستجو و محتوا را نمایش بدید که این مورد رو هم باید از طریق هم htaccess و هم کدهای php مدیریت و مناسب پروژه خود تغییر بدید.

      پاسخ
      1. امیر ۱۴ شهریور ۱۳۹۸

        سلام
        منم متوجه نشدم تمامی کار هایی که گفتین انجام دادم ولی چه جوری url تغییر بدم ممکن یک مثال بزنید؟
        این طوریکه توضیح دادین باید urlدخل دیتابیس با ایدی ذخیر کنم(مثل:theme-56) و url با get در ادامه مطلب بگیرم و با explode ایدی جدا کنم؟

        پاسخ
  11. علی ۳ مرداد ۱۳۹۷

    سلام / از بابت این مقاله خوبتون ممنونم/ فقط یه سوال:
    اینکه در تعریف تابع $wordLimit = نوشتید و جلوش بعد مساوی هیچی نیست و یا در لاین ۵ بعد از != باز هیچی ننوشتین را متوجه نمیشم. میشه بگین چرا خالیه؟؟

    پاسخ
    1. حسن شفیعی ۳ مرداد ۱۳۹۷

      سلام . خوشحالم که مفید واقع شده . همانطور که داخل متن پست هم با رنگ قرمز توضیح داده شده برای کپی کدها باید روش دابل کلیک کنید تا وارد محیط سفیدرنگ کپی بشید و بعد کدها رو استفاده کنید

      موفق باشیذ.

      پاسخ
  12. عرفان زیده سرایی ۳ تیر ۱۳۹۷

    سلام. ظاهرا تو تابع فوق ثابت UTF8_ENABLED تعریف نشده . چون در زمان اجرا خطای Notice: Use of undefined constant UTF8_ENABLED – assumed ‘UTF8_ENABLED’ نمایش داده میشود.ممنون میشم اصلاح کنید.

    پاسخ
    1. حسن شفیعی ۳ تیر ۱۳۹۷

      سلام . مشکل خاصی نیست به جای UTF8_ENABLED مقدار true بگذارید.
      موفق باشید.

      پاسخ
دوره های آموزشی
 ... صبر کنید! قبل از رفتن

می خواهید صفر تا صد ساخت ربات تلگرام را یاد بگیرید ؟

برای دریافت آموزش ساخت ربات تلگرام  روی دکمه زیر بزنید
می خواهم یاد بگیرم ربات بسازم
close-link

دانلود رایگان کتاب آموزش PHP

صفر تا صد PHP و MySQL را یکجا یاد بگیرید
همین الان دانلود کن
نگران نباشید. ایمیل‌های مزاحم نمی‌فرستیم
close-link