سلام وقت بخیر...
من سایتی طراحی کردم، و مثلابرای رفتن به بخش کتگوری ها این ادرس باید وارد بشه :
اما در سایت مشابهش آدرس ها مرتب تر و تمیز تر به این صورت هستند :
http:/siteName.ir/blog/viewposts/category/6-omoramozeshi
چه کار باید بکنم که اینطوری و مرتب باشه url و پسوند ها و علامت سوال هارو نشون نده؟؟
@endworld @sinashahoveisi @SpyStar0003 @wozniak @hesammousavi و دیگر دوستان لطفا راهنمایی کنن....
خواهش میکنم، فرض کنید در لوکال هاست چنین دایرکتوریای داریم :
// -- 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 اصلی" شاید خیلی درست نباشه.
سلام
نیاز به 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 آشنایی داشته باشید.
سلام وقتتون بخیر...
@webnolin
اما من دقیقا همینو کپی کردم جواب نداد !
و برام همون ادرس رو اورد !
آدرس اینه :
سلام
بله کدی که فرستادم یه مثال بود برای اینکه راه درستشو متوجه بشید.
اینکه کار نکرده به دلایل مختلفی میتونه باشه، ممکنه آدرس فایل مقصد رو به درستی وارد نکرده باشید.
اگر مطمئنید که آدرس رو نسب به فایل index اصلی درست وارد کردید باید تنظیمات آپاچی زمپ یا ومپتون رو تغییر بدید. توی فایل کانفیگ دنبال چنین کدی بگردید و اون رو از حالت کامنت خارج کنید :
LoadModule rewrite_module modules/mod_rewrite.so
نمیتونم دقیقا بگم مشکل از چی میتونه باشه، چون باید دایرکتوری پروژه شما بررسی بشه. اما اگر این موارد هم کمکتون نکرد یه مقدار جستجو کنید یا با آدرس های موجود توی کد قبلی ور برید، حتما جواب میگیرید.
آدرس رو نسب به فایل index اصلی درست وارد کردید
متوجه این قسمت نمیشم...یعنی چی آدرس نسبت به فایل ایندکس اصلی باشه؟؟؟
*(خیلی ممنونم از وقتی که میزارید🙏)
خواهش میکنم، فرض کنید در لوکال هاست چنین دایرکتوریای داریم :
// -- 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 اصلی" شاید خیلی درست نباشه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟