میثم ثابتی
2 سال پیش توسط میثم ثابتی مطرح شد
7 پاسخ

مرتب کردن و خلاصه کردن url سایت

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

http://localhost:8000/allCategoryNews.php?category=23

اما در سایت مشابهش آدرس ها مرتب تر و تمیز تر به این صورت هستند :

http:/siteName.ir/blog/viewposts/category/6-omoramozeshi

چه کار باید بکنم که اینطوری و مرتب باشه url و پسوند ها و علامت سوال هارو نشون نده؟؟

@endworld @sinashahoveisi @SpyStar0003 @wozniak @hesammousavi و دیگر دوستان لطفا راهنمایی کنن....


ثبت پرسش جدید
محسن عواطفی
تخصص : برنامه‌نویس وب
@webnolin 2 سال پیش مطرح شد
1

خواهش میکنم، فرض کنید در لوکال هاست چنین دایرکتوری‌ای داریم :

// -- www
// ---- project-folder
// ------ categories
// -------- cat-1.php
// -------- cat-2.php
// -------- cat-3.php
// -------- cat-4.php
// ------ index.php
// ------ .htaccess
// ---- index.php

ما اینجا دو تا فایل index.php داریم، یکی درون پوشه www هست که مربوط به آدرس localhost میشه، یکی درون پوشه project-folder هست که مربوط به آدرس localhost/project-folder میشه.
در اینجا اگر وارد آدرس localhost/project-folder بشیم، درخواست ابتدا به آدرس localhost و فایل index.php اصلی که در پوشه www هستش فرستاده میشه و بعد به آدرس localhost/project-folder و فایل index.php موجود در پوشه project-folder.
در اینجا منظور من از فایل اصلی index.php فایل موجود در پوشه www هستش.
اگر بخوایم محتوای این آدرس‌ها رو :

localhost/project-folder/categories/cat-1.php
localhost/project-folder/categories/cat-2.php
localhost/project-folder/categories/cat-3.php
localhost/project-folder/categories/cat-4.php

به این شکل :

localhost/project-folder/category/1
localhost/project-folder/category/2
localhost/project-folder/category/3
localhost/project-folder/category/4

نشون بدیم باید از چنین دستوری در فایل .htaccess موجود در پوشه project-folder استفاده کنیم :

RewriteEngine on
RewriteRule ^category/([0-9]+)/?$ /project-folder/categories/cat-$1.php

دقت کنید این کد دو تا ساختار url از شما میگیره.
آدرس اول خط اول و آدرس دوم خط دوم :

^category/([0-9]+)/?$
/project-folder/categories/cat-$1.php

آدرس اول آدرسی هستش که ظاهر زیبایی داره و قراره محتوای فایل موجود در آدرس خط دوم رو نشون بده. به عبارت دیگه آدرس خط اول نسخه‌ی زیباتر شده آدرس خط دوم هست.
نکته ای که وجود داره اینه، معمولا در آدرس دهی های نسبی ما با توجه به موقعیت فایل فعلی آدرس رو تنظیم میکنیم. در اینجا با اینکه فایل .htaccess درون پوشه project-folder هستش اما آدرس دهی (برای آدرس دوم) رو از یه پوشه بالاتر (یعنی پوشه www که فایل index.php اولیه درونش هست) انجام میدیم.
البته اصطلاح "index.php اصلی" شاید خیلی درست نباشه.


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

سلام
نیاز به Url rewriting داره.
باید در فایل .htaccess سایتتون از چنین دستوری استفاده کنید :

RewriteEngine on
RewriteRule ^category/([0-9]+)/?$ /allCategoryNews.php?category=$1

این کد باعث میشه اگر کاربر مثلا وارد این لینک بشه :

https://sitename.com/category/13

محتوای این فایل براش نمایش داده بشه :

https://sitename.com/allCategoryNews.php?category=13

فقط دقت داشته باشید، این آدرس‌ها باید به نسبت فایل اصلی index.php تنظیم بشن. (این مورد به خصوص هنگام استفاده از سابدامین و یا در لوکال هاست مهمه).
و در آخر برای اینکه به ساختار دلخواهتون برسید باید یه مقدار با Regex آشنایی داشته باشید.


میثم ثابتی
تخصص : در حال برنامه نویس شدن... :) J...
@meysamsabeti8 2 سال پیش آپدیت شد
0

سلام وقتتون بخیر...
@webnolin
اما من دقیقا همینو کپی کردم جواب نداد !
و برام همون ادرس رو اورد !
آدرس اینه :

http://localhost:8000/allCategoryNews.php?category=23


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

سلام
بله کدی که فرستادم یه مثال بود برای اینکه راه درستشو متوجه بشید.
اینکه کار نکرده به دلایل مختلفی میتونه باشه، ممکنه آدرس فایل مقصد رو به درستی وارد نکرده باشید.
اگر مطمئنید که آدرس رو نسب به فایل index اصلی درست وارد کردید باید تنظیمات آپاچی زمپ یا ومپتون رو تغییر بدید. توی فایل کانفیگ دنبال چنین کدی بگردید و اون رو از حالت کامنت خارج کنید :

LoadModule rewrite_module modules/mod_rewrite.so

نمیتونم دقیقا بگم مشکل از چی میتونه باشه، چون باید دایرکتوری پروژه شما بررسی بشه. اما اگر این موارد هم کمکتون نکرد یه مقدار جستجو کنید یا با آدرس های موجود توی کد قبلی ور برید، حتما جواب میگیرید.


میثم ثابتی
تخصص : در حال برنامه نویس شدن... :) J...
@meysamsabeti8 2 سال پیش مطرح شد
0

آدرس رو نسب به فایل index اصلی درست وارد کردید

متوجه این قسمت نمیشم...یعنی چی آدرس نسبت به فایل ایندکس اصلی باشه؟؟؟

*(خیلی ممنونم از وقتی که میزارید🙏)


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

خواهش میکنم، فرض کنید در لوکال هاست چنین دایرکتوری‌ای داریم :

// -- www
// ---- project-folder
// ------ categories
// -------- cat-1.php
// -------- cat-2.php
// -------- cat-3.php
// -------- cat-4.php
// ------ index.php
// ------ .htaccess
// ---- index.php

ما اینجا دو تا فایل index.php داریم، یکی درون پوشه www هست که مربوط به آدرس localhost میشه، یکی درون پوشه project-folder هست که مربوط به آدرس localhost/project-folder میشه.
در اینجا اگر وارد آدرس localhost/project-folder بشیم، درخواست ابتدا به آدرس localhost و فایل index.php اصلی که در پوشه www هستش فرستاده میشه و بعد به آدرس localhost/project-folder و فایل index.php موجود در پوشه project-folder.
در اینجا منظور من از فایل اصلی index.php فایل موجود در پوشه www هستش.
اگر بخوایم محتوای این آدرس‌ها رو :

localhost/project-folder/categories/cat-1.php
localhost/project-folder/categories/cat-2.php
localhost/project-folder/categories/cat-3.php
localhost/project-folder/categories/cat-4.php

به این شکل :

localhost/project-folder/category/1
localhost/project-folder/category/2
localhost/project-folder/category/3
localhost/project-folder/category/4

نشون بدیم باید از چنین دستوری در فایل .htaccess موجود در پوشه project-folder استفاده کنیم :

RewriteEngine on
RewriteRule ^category/([0-9]+)/?$ /project-folder/categories/cat-$1.php

دقت کنید این کد دو تا ساختار url از شما میگیره.
آدرس اول خط اول و آدرس دوم خط دوم :

^category/([0-9]+)/?$
/project-folder/categories/cat-$1.php

آدرس اول آدرسی هستش که ظاهر زیبایی داره و قراره محتوای فایل موجود در آدرس خط دوم رو نشون بده. به عبارت دیگه آدرس خط اول نسخه‌ی زیباتر شده آدرس خط دوم هست.
نکته ای که وجود داره اینه، معمولا در آدرس دهی های نسبی ما با توجه به موقعیت فایل فعلی آدرس رو تنظیم میکنیم. در اینجا با اینکه فایل .htaccess درون پوشه project-folder هستش اما آدرس دهی (برای آدرس دوم) رو از یه پوشه بالاتر (یعنی پوشه www که فایل index.php اولیه درونش هست) انجام میدیم.
البته اصطلاح "index.php اصلی" شاید خیلی درست نباشه.


میثم ثابتی
تخصص : در حال برنامه نویس شدن... :) J...
@meysamsabeti8 2 سال پیش آپدیت شد
0

دم شما گرم خییلی ممنونم💗💗
@webnolin


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

قربون شما، امیدوارم حرفام کمکی کرده باشه. ❤️


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

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