پرهام ناصحی
2 سال پیش توسط پرهام ناصحی مطرح شد
7 پاسخ

مشکل خوانده نشدن GET در url frindly در زبان PHP

اگر سایت یوتیوب را هنگام سرچ دیده باشید میبینید که در آن یک یو ار ال result وجود دارد و بعد از آن method گت
تصویر سایت یوتیوب :
توضیح تصویر رو وارد کنید
کد فایل .htaccess من :


Options +FollowSymLinks
RewriteEngine on

RewriteRule  post/(.*)/ index.php?id=$1
RewriteRule post/(.*) index.php?id=$1

من در این جا میخوام مثلا "post/122" رو در اون صفحه ای برای پیج بندی بزارم و میخوام method گت در این جا به اون اضافه بشه
اما مشکل تازه اینجاست که شروع میشه . چون تابع گت دیگه خوانده نمیشه .

!!یو ار ال ها تستی هستند!!


ثبت پرسش جدید
احسان داوری
تخصص : برنامه نویس
@ehsndvr 2 سال پیش مطرح شد
0

سلام ، صبحتون بخیر
من توضیحات شما رو چند بار خوندم و متوجه نشدم
یعنی مثلا شما میخواید یک آدرس داشته باشید که با Method گت (Get) باشه و اطلاعاتی رو براش به عنوان URL Parameter یا URL Variable ارسال کنید
مثل نمونه زیر :
https://roocket.ir/discuss/Page?color=red&backcolor=blue
میخواید این مقادیر به اون کد شما ارسال بشه و ارش استفاده کنید درسته ؟
خب حالا شما یه صفحه دارید به نام post/123 و میخواید به این صورت باشه
post/123?id=1
یا یه صفحه دارید به نام post و میخواد به این صورت باشه
post?id=1 یعنی مثلا برو به پستی که آیدی (ID) شناسه اون پست برابر هست با یک و اون روی برای کاربر نشون بده

لطفا نمونه ایی رو که میخواید برای بنده بنویسید و یکم دقیقتر توضیح بدید


پرهام ناصحی
تخصص : بک‌اند کار
@parhamdeveloper 2 سال پیش مطرح شد
0

@ehsndvr
حالت دوم یعنی
post?id=123
اما در اینجا با فایل .htaccess یو ار ال ها رو friendly کردم و دیگه اینجا متود های گت خوانده نمی شوند .
کل کاری که من انجام دادم :
اول مثلا صفحه ی ایندکس پست های ما http://site.com/blog بوده حالا ما می خوایم اینجا یک متود GET بهش اضافه بشه و بشه http://site.com/blog?page=2 در اینجا باز همون صفحه ی اول رو میاره و تغییری در صفحه ایجاد نمیشه یعنی متود GET خوانده نمیشه .
اینجا دقیقا باید چیکار کنم

فایل .htaccess :


Options +FollowSymLinks
RewriteEngine on

RewriteRule  site.com/(.*)/ index.php?mode=blog&?id=$1
RewriteRule site.com/(.*) index.php?mode=blog&?id=$1

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


احسان داوری
تخصص : برنامه نویس
@ehsndvr 2 سال پیش مطرح شد
0

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

RewriteRule  site.com/(.*)/ index.php?mode=blog?id=$1
RewriteRule site.com/(.*) index.php?mode=blog?id=$1

و نحوه صدا زدن به این شکل میشه
site,com/test/index.php?mode=blog&id=123
نباید برای پارامتر های بعدی از ؟ استفاده کنید همون & کافیه
اگر اشتباه نکنم ... لطفا اینو تست کنید


پرهام ناصحی
تخصص : بک‌اند کار
@parhamdeveloper 2 سال پیش مطرح شد
0

@ehsndvr
نه این یو ار ال باز نویسی میشه و دیگه اینطوری نوشته نمیشه


احسان داوری
تخصص : برنامه نویس
@ehsndvr 2 سال پیش مطرح شد
0

ببینید وقتی شما URL Parameters رو وارد میکنید و اون مسیر رو به صورت GET صدا میزنید (مثل این مسیر : site.com/blog?page=2) توی کدتون بررسی کنید ببینید اصلا این پارامتر ها دریافت میشه یا نه ؟
چون شما هر 2تا مسیر رو یکجا تعریف کردید ، یعنی آخرش اگر هم این URL صدا زده بشه ، فایل Index.php رو میخونه
شما این کد رو داخل Index.php بزارید و ببینید اصلا لینک شما URL Parameter داره ؟

و من دقیقا htaccess رو نمیدونم و اگر باز شما به جوابی نرسیدید بیشتر تحقیق میکنم
داخل لاراول ما میایم در قسمت Route ها یک مسیر تعریف میکنیم و یک تابع از یک Controller رو بهش اختصاص میدیم
اما داخل فایل htaccess شما ، بنده هرچی نگاه میکنم همش یک مسیر داره صدا زده میشه...


پرهام ناصحی
تخصص : بک‌اند کار
@parhamdeveloper 2 سال پیش مطرح شد
0

@ehsndvr
مشکلم حل شد .
باید داخل فایل .htaccess بعد از هر بازنویسی url یه [QSA] گذاشت تا متود های گت دیگه رو هم بتونه بخونه.
و ببخشید که وقتت رو هم گرفتم.


احسان داوری
تخصص : برنامه نویس
@ehsndvr 2 سال پیش مطرح شد
1

@parhamdeveloper سلام آقای ناصحی عزیز
خداروشکر که مشکلتون حل شد ، بنده یه متن بلند براتون نوشته بودم ، موقع فرستادن مرورگرم بسته شد 😂
خداهش میکنم عزیز شما هرموقع با بنده کار داشتید فقط من رو مخاطب قرار حتما میام نگاه میکنم.


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

ورود یا ثبت‌نام