ساخت 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 اختصاصی می نویسید یا اینکه در حال انجام یک پروژه هستید این قابلیت را در پروژه پیاده سازی کنید .

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

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

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۷۸)

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

  1. محمود رنجبر ۲۵ آذر ۱۴۰۱

    سلام استاد شفیعی خدا قوت
    من در سایتم برند و مدل خودروها رو از دیتابیس گرفتم و هر مدلی رو در تگ a قرار دادم و در href این تگ id و title رو قرار دادم تا اینجا در گوگل مثلا پژو ۴۰۵ در نتایج میاد میخوام مثل دیوار سال ساخت هم در نتایج بیاد مثلا پژو ۴۰۵ مدل ۹۵ و بقیه سالها
    به این تگ a چطوری سال ساخت رو اضافه کنم ؟
    چون برای ۴۰۵ فقط یک تگ a وجود داره ولی سالهای ساخت از ۷۰ تا ۱۴۰۰ هست
    ممنون میشم راهنمایی بفرمایید

    پاسخ
  2. محمود رنجبر ۸ مرداد ۱۴۰۱

    سلام بر استاد گرامی مهندس شفیعی خدا قوت
    من بحث تغییر url رو در خیلی از صفحات سایتم ایجاد کردم کار میکنه اما در یکی از صفحات مشکلی وجود داره تو بحث ریدایرکت با php
    من در صفحه ای هستم که url اون به صورت زیر هست php پوشه پروژه و post یک پارامتر و ۲۴۵ یک id
    localhost:2080//php/post/245
    حالا میخوام با دستور header به صفحه زیر برم یعنی صفحه user
    localhost:2080//php/user
    اما کلمه user به انتهای url اول اضافه میشه و پیغام زیر رو میده یعنی post و ۲۴۵ از url حذف نمیشه
    Localhost redirect too many
    با جاوا اسکریپت ریدایرکت کردم مشکلی نداشت ولی من با php میخوام
    ممنون میشم راهنمایی کنید مثل همیشه
    سپاس از نت پارادیس

    پاسخ
  3. محمود رنجبر ۶ خرداد ۱۴۰۱

    سلام استاد شفیعی وقت بخیر من دامنه diginurabad.ir رو با ssl دارم برای معرفی به گوگل باید چند حالت رو معرفی کنم ؟
    تو بعضی از سایتها نوشته با http و https وبا www و بدون www
    این موضوع درسته ؟
    من فقط با https و بدون www معرفی کردم به گوگل
    بعد اونیکه انتخاب اصلی هست رو خود گوگل شناسایی میکنه یا باید ما انتخاب کنیم ؟

    پاسخ
    1. حسن شفیعی ۸ خرداد ۱۴۰۱

      سلام. فقط همون https و بدون www کافیه و کار دیگه نمیخواد انجام بدید

      پاسخ
  4. علی باقری ۲۳ فروردین ۱۴۰۱

    سلام. من یه سایت php دارم اختصاصیه و ساده. میخوام با htaccess آدرس های https://mydomain.ir/service.php?cat=ahmad رو به آدرس https://mydomain.ir/service/ahmad تبدیل کنم که البته service و ahmad متغیر هستن!!! یعنی کلی آدرس اینجوری رو میخوام تغییر بدم با این کد!!! چکار کنم؟

    پاسخ
    1. حسن شفیعی ۲۳ فروردین ۱۴۰۱

      سلام.
      از همین کد htaccess داخل آموزش استفاده کنید و به جای index.php?id میتونید service.php?cat رو جایگزین کنید

      پاسخ
  5. پرهام ناصحی ۲ بهمن ۱۴۰۰

    حالا چطور مثلا یک فایل بدون متد گت رو فرندالی کنیم ؟

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

      نیاز هست صفحه دومی باشه که از اونجا لینک بدید به اون فایل

      پاسخ
  6. محمود رنجبر ۲۲ مرداد ۱۴۰۰

    حسن جان مشکل حل شد سپاس
    باید تو htaccess
    پوشه پروژه رو به آدرس اضافه میکردم

    پاسخ
  7. محمود رنجبر ۲۲ مرداد ۱۴۰۰

    تو زمپ بهم ارور ۴۰۴ میده مهندس شفیعی ولی مسیر ها همه درسته

    پاسخ
  8. محمود رنجبر ۲۲ مرداد ۱۴۰۰

    سلام مهندس شفیعی من جدیدترین نسخه زمپ رو هم نصب کردم بعد از انجام تنظیمات ری استارت هم کردم ولی تو لوکال تغییر url کار نمیکنه؟ از ومپ سرور هم استفاده کردم بازم کار نمیکنه؟
    ولی تو هاست بدون مشکل کار میکنه
    مدیر یکی از سایتها با teamviewer هم نتونست حلش کنه به نظر شما چه مشکلی میتونه باشه ممنون میشم یه راهنمایی داشته باشید

    پاسخ
  9. reza ۱۷ مرداد ۱۴۰۰

    سلام ببخشید من متوجه نشدم فایل htaccess چیه کجا بزاریم داخلش چیه؟ از کجا بیارم؟؟؟
    اون کد های پی اچ پی رو هم کجا چطور استفاده کنم؟؟؟؟
    من از وردپرس استفاده نمی کنم از پی اچ پی خام استفاده می کنم
    لطفا کامل توضیح بدید!! ممنون.

    پاسخ
    1. حسن شفیعی ۱۸ مرداد ۱۴۰۰

      سلام. اول مقدمات php رو یاد بگیرید
      https://netparadis.com/category/php-tutorials/

      پاسخ
  10. reza ۱۷ مرداد ۱۴۰۰

    سلام. این روش تو هاست های معمولی کار میکنه؟؟؟

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

      سلام بله

      پاسخ
  11. محمود رنجبر ۱۰ مرداد ۱۴۰۰

    سلام مهندس شفیعی من تغییر url رو انجام دادم رو هاست کار میکنه ولی تو لوکال با زمپ کار نمیکنه یه سری تنظیمات هم تو سایتها نوشته انجام دادم بازم نشد مثل فعال کردن ماژول rewrite و تغییر allowoverride none به allowoverride all
    حالا میشه راهنمایی کنید چه کار کنم ؟

    پاسخ
    1. حسن شفیعی ۱۰ مرداد ۱۴۰۰

      سلام.
      بعد اعمال این موارد باید آپاچی رو یکبار ریستارت بزنید.
      اگر باز درست نشد نسخه جدید یا دیگری از xampp نصب کنید یا از wamp استفاده کنید

      پاسخ
  12. محمود رنجبر ۸ مرداد ۱۴۰۰

    حسن جان تغییر دادم اسم ها رو عوض کردم منظورم اینه با این شرایط کار نمیکنه؟

    پاسخ
  13. محمود رنجبر ۸ مرداد ۱۴۰۰

    سلام مهندس شفیعی من به هر شکلی که تغییر url انجام میدم نه روی لوکال و ن رو هاست واقعی کار نمیکنه
    چیکار باید بکنیم تو این مواقع سایر دستورات که می نویسم کار میکنه به جز تغییر url
    میخوام مثلا more.php?id=5 را به more تغییر بدم هر جوری می نویسم کار نمیکنه؟ میشه شکل درستش رو بنویسید تشکر از سایت خوبتون

    پاسخ
    1. حسن شفیعی ۸ مرداد ۱۴۰۰

      سلام.
      این htaccess نوشته شده برای index.php هست.
      باید کدش رو به more.php تغییر بدید
      ۲

      RewriteCond %{REQUEST_URI} !^/index.php
      RewriteRule ^(.*)$ /index.php?id=$1 [L]

      پاسخ
  14. حمزه ۲۶ اسفند ۱۳۹۹

    سلام اقای شفیعی عزیز
    بنده میخام در قسمت url مثلا برای slug محصولات حروف فارسی رو وارد کنم نیاز یه کمک داشتم.ممنون میشم راهنمایی کنید.سپاس

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

      سلام.
      بله بفرمایید چه مشکلی با کاراکتر های فارسی دارید

      پاسخ
      1. حمزه ۲۶ اسفند ۱۳۹۹

        url فارسی داخل slug میزارم بعد ۴۰۴ not found میده و ارور زیر رو میده :
        The requested URL /modmo/products/27/بلوز-مردانه-حوشکل was not found on this server.
        Apache/2.4.37 (Win64) PHP/7.2.14 Server at localhost Port 80

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

        باید هرچیزی بعد id که ۲۷ هست و / را ignore کنید یعنی نادیده بگیرید و همه چیز رو بر اساس id در دیتابیس جستجو کنید

        پاسخ
      3. حمزه ۲۶ اسفند ۱۳۹۹

        چطوری نادیده بگیرم؟؟؟اصلا صفحه رو ۴۰۴ میزنه !!!میشه بیشتر راهنمایی کنید؟

        پاسخ
      4. حمزه ۲۶ اسفند ۱۳۹۹

        من متوجه نشدم،اسلاگ من الان انگلیسی هست،میخام فارسیش کنم،اگ لطف کنید فرایند کار و بم بگین ممنون میشم.

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

        از این در htaccess استفاده کنید :
        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php?$1 [L,QSA]

        اول از همه در لوکال هاست تست و بعد روی هاست واقعی پیاده کنید

        پاسخ
  15. سمیرا ۲ اسفند ۱۳۹۹

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

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

      سلام. ممنون
      باید دقیقتر بفرمایید متوجه نشدم

      پاسخ
      1. سمیرا ۳ اسفند ۱۳۹۹

        کد زیر تگ b رو نشان میده و علامت بزرگتر کوچکتر را به موجودیت تبدیل نمیکنه؟؟؟؟
        $str = “This is some bold text.”;
        echo htmlspecialchars($str);
        در حقیقت باید اینجوری نشون بده
        This is some <b>bold</b> text.

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

        دلیلش اینه که مرورگر مجدد اون رو میخونه و چیزی که شما باید نگاه کنید view-source مرورگر هست نه خود خروجی مرورگر و در view-source یا همان ctrl+u میبینید همه چیز اوکی هست و مطمین باشید درست اینکد شده

        پاسخ
  16. حسین ۲۷ بهمن ۱۳۹۹

    سلام وقت بخیر استاد
    برای ایجاد صفحه سفارشی خطای ۴۰۴ یا ۴۰۳ باید از چه روشی و در کدامین فایل سایت استفاده کنیم لطفا راهنمایی کنید.

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

      سلام ممنون. در سی پنل بخشی به اسم Error pages هست از اونجا میتونید تنظیم کنید. از هاستینگ هم میتونید بپرسید

      پاسخ
  17. ندا ۲۶ آذر ۱۳۹۹

    فایل .htaccess رو میشه روی لوکال هاست هم ساخت و این کدو اجرا کرد

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

      سلام. بله

      پاسخ
      1. ندا ۲۶ آذر ۱۳۹۹

        فایل .htaccess را داخل کدوم پوشه لوکال ایجاد کنم. و فانکشن generateSeoURL رو در کدوم فایل ذخیره کنیم. لطفا راهنمایی کنید

        پاسخ
      2. حسن شفیعی ۲۶ آذر ۱۳۹۹

        داخل همون فولدری که پروژتون هست و تابع رو هم هر جایی که میخواید استفاده کنید در پروژه اضافه کنید.

        پاسخ
      3. بهنام ۲۷ آذر ۱۳۹۹

        سلام استاد یه خواهش ازتون دارم . من نتونستم این کدو اجرا کنم میشه فایلمو براتون ارسال کنم یه نگاهی بهش بندازید ؟ کلافم کرده !!

        پاسخ
      4. حسن شفیعی ۲۷ آذر ۱۳۹۹

        سلام. این موارد انجام نمیشه یا باید php متوسط یاد بگیرید یا اگر پروژه تجاریه به یه برنامه نویس دیگه بسپارید.

        پاسخ
  18. ندا ۲۰ آذر ۱۳۹۹

    باسلام وقت بخیر
    سایتم وردپرس نیست . و فایل htaccess نداره . این پروژه رو چه طوری پیاده کنم رو سایت. لطفا راهنمایی کنید

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

      سلام. ممنون
      میتونید فایل .htaccess رو در هاست بسازید و مشکلی نداره

      پاسخ
  19. hh ۱۰ آبان ۱۳۹۹

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

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

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

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

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

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

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

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

    سلام آقای شفیعی ممنون از آموزش خوبتون یه سوالی داشتم من الان تونستم این یو ار الو :
    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

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

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

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

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

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

    من کد زیر که دادین تست کردم کار نکرد متاسفانه:
    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 هم اضافه کنید تا کاراکتر های لاتین هم خوانده بشه.
      موفق باشید.

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

    سلام
    کد بالا برای 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]

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

    سلام
    وقتی کد زیر داخل فایل 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 فراخوانی می شود

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

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

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

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

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

    سلام ممنون از سایت خوبتون…
    من با 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 استفاده کنید.

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

        سلام استاد
        مقدار url رو چه طوری دریافت کنیم؟

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

        سلام.
        با آرایه سراسری $_SERVER
        اینو var_dump کنید اطلاعاتش مشخص هست

        پاسخ
      3. حسین ۲۰ اسفند ۱۳۹۹

        با سلام مجدد
        در پاسخ بالا فرمودید آخرین عنصر آرایه رو دریافت کنیم ! خوب اگه روی لینک کلیک نشه و رشته ای ارسال نکنیم آخرین عنصر آرایه پوشه سایت میشه ، و اسم پوشه رو نشون میده؟؟؟ و کدهای نوشته شده همیشه نشان داده میشه؟؟؟

        پاسخ
      4. حسن شفیعی ۲۱ اسفند ۱۳۹۹

        سلام. بله دیگه کاربر تا وارد اون صفحه نشه که نمی تونید اطلاعات url رو بگیرید

        پاسخ
      5. حسین ۲۱ اسفند ۱۳۹۹

        ببخشید دارم سرتونو درد میارم ، اگر در صفحه index.php بخواد دریافت کنه و به صفحه دیگه ارجاع نده چی . مثه وردپرس ….. ؟ ازکدوم اطلاعات متغیر $_SERVER میشه استفاده کرد؟ یا کدوم متغیرش خالی باشه ریدایرکت کنه ؟ لطفا راهنمایی کنید قربونتون

        پاسخ
      6. حسن شفیعی ۲۱ اسفند ۱۳۹۹

        اینو var_dump کنید ببینید کدومش به دردتون میخوره چون روی سرور متفاوت از لوکال هتس

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

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

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

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

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

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

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

        منم متوجه نشدم تمامی کار هایی که گفتین انجام دادم ولی چه جوری url تغییر بدم ممکن یک مثال بزنید؟

        پاسخ
      3. حسن شفیعی ۲۶ آذر ۱۳۹۹

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

        پاسخ
      4. حسین ۲۶ آذر ۱۳۹۹

        تا مثال بالاتون درسته ممنونم ولی مشکل من چکونگی دریافت ایدی هستش که به این صورت دریافت میکنم $id=$_GET[‘id’]; و نمیشه

        پاسخ
      5. حسن شفیعی ۲۶ آذر ۱۳۹۹

        بهتره php تا حد متوسط رو یاد بگیرید و بعد سراغ این مثال بیاید و یاد بگیرید چطور یک سایت خبری برای نمایش مطالب از دیتابیس و ثبت نام کاربران را بسازید

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

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

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

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

      موفق باشیذ.

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

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

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

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

      پاسخ
دوره های آموزشی