• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

ایجاد آدرس شبیه وردپرس

aqabaqeri

کاربر تازه وارد
تاریخ عضویت
18 فوریه 2015
نوشته‌ها
4
لایک‌ها
0
سن
36
یه سوال در مورد php داشتم که بدجور گیر کردم. ممنون میشم کمکم کنید.

من بصورت ساده چند تا فایل index.php و contact.php و news.php و about.php دارم. حالا می خواهم آدرس url این صفحات شبیه وردپرس بشود و چیزهای اضافی مانند .php و & و = و ? حذف بشه و با / از هم جدا بشن کلمات.
من خواستم از .htaccess هایی که موجوده استفاده کنم ولی اکثر اونها برای معماری MVC بود.


یعنی می خوام علاوه بر اینکه .php رو کلا حذف کنه بتونه news.php?cat=ffff&id=55 رو به
news/cat/ffff/id/55 تبدیل کنه
 

alishadmehr

Registered User
تاریخ عضویت
25 فوریه 2011
نوشته‌ها
868
لایک‌ها
135
محل سکونت
آخر خط ...
به نظرم از همون اول باید یک فایل index.php میساختی و بعد بر اساس اون میومدی index.php?page=news&id=45 رو میساختی.

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

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

مثلا اینطوری
PHP:
// index.php
<?php

switch( $_GET['page'] )
{
    case "page":
        // include page.php
        break;
    case "news":
        // include news.php
        break;
    case "contact":
        // include contact.php
        break;
    case default:
        // include home.php
        break;
}


// .htaccess
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ /?page=$1&category=$2&id=$3 [L]
 

aqabaqeri

کاربر تازه وارد
تاریخ عضویت
18 فوریه 2015
نوشته‌ها
4
لایک‌ها
0
سن
36
این کار مشکل داره!
اینجوری نمیشه برای هر صفحه meta و title و css و js اختصاصی گذاشت و باید همه چیز رو index بذاریم. پس جواب نمیده
 

webs

Registered User
تاریخ عضویت
14 آپریل 2010
نوشته‌ها
2,019
لایک‌ها
1,475
محل سکونت
php.ini
نه ربطی نداره. شما میتونید کل پروژه تون رو در index.php بذارید ولی با مقادیر اختصاصی.

---------------------------------------

اگه پروژه تون رو نوشتید راحتترین راه استفاده از htaccess است. اگه نحوه آدرس دهی هر یک از فایل های index.php و contact.php و news.php و about.php متفاوته، میتونید در htaccess برای هر کدوم از فایل ها یه دستور جداگانه با فرمت متفاوت تعریف کنید.
 

aqabaqeri

کاربر تازه وارد
تاریخ عضویت
18 فوریه 2015
نوشته‌ها
4
لایک‌ها
0
سن
36
آخه من امتحان کردم
میشه یه فایل کوچک ولی کامل بنویسید و بفرستید برام چون هرکار میکنم نمیشه

ممنون میشم چون خیلی بهش نیاز دارم
 

webs

Registered User
تاریخ عضویت
14 آپریل 2010
نوشته‌ها
2,019
لایک‌ها
1,475
محل سکونت
php.ini
1- مثلاً آدرس شما اینه:
کد:
http://www.mysite.com/news.php?cat=ffff&id=55

اگه میخواید به این مدل دربیاد:
کد:
http://www.mysite.com/ffff/55.html
کدش میشه:
کد:
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)\.html$ /news.php?cat=$1&id=$2 [L]

===========================================
2- مثلاً آدرس شما اینه:
کد:
http://www.mysite.com/news.php?cat=ffff&id=55

اگه میخواید به این مدل دربیاد:
کد:
http://www.mysite.com/cat/ffff/id/55.html
کدش میشه:
کد:
RewriteEngine On
RewriteRule ^cat/([^/]*)/id/([^/]*)\.html$ /news.php?cat=$1&id=$2 [L]

===========================================
3- مثلاً آدرس شما اینه:
کد:
http://www.mysite.com/news.php?cat=ffff&id=55

اگه میخواید به این مدل دربیاد:
کد:
http://www.mysite.com/news/cat/ffff/id/55/
کدش میشه:
کد:
RewriteEngine on
RewriteRule news/cat/(.*)/id/(.*)/ news.php?cat=$1&id=$2

****

برای هر چندتا فایل php که داری، کدهای htaccess رو زیر هم داخل فایل .htaccess قرار میدی. حالا فقط باید لینک هایی که قراره به صورت Html نمایش داده بشن، به فرمت دلخواهی که در htaccess تعیین کردی، به صورت دستی تغییر بدی. (یعنی فرمت لینک های خروجی رو داخل فایلهای php عوض کن)

توجه کنید که این ساده ترین راه است و راه های پیشرفته تری هم وجود داره.
 

aqabaqeri

کاربر تازه وارد
تاریخ عضویت
18 فوریه 2015
نوشته‌ها
4
لایک‌ها
0
سن
36
از شما ممنونم ولی به خدا وقتی میگذارم کار نمیکنه
بعد هم همانطور که فرمودید برای هر صفحه باید یک کد بنویسیم که اگه تعداد صفحات بالا بره واویلا میشه
میشه لطف کنید و اون راه پیشرفته ترش رو با یه مثال عملی اجرا کنید و فایلش رو برا دانلود همه بگذارید ؟

بسیار ممنون میشم
 

nilord

Registered User
تاریخ عضویت
18 آگوست 2014
نوشته‌ها
219
لایک‌ها
101
سلام به نظرم این طوری حل باید بشه دیگه : باید یک کدنویسی کنین که با دریافت مثلا این آدرس مسیر کوئری فلان اجرا بشه . مثلا شما تایپ میکنین yoursite.com/cat/news و آدرس باید برای کوئری خودتان ترجمه بشه .ک همثلا منظور از این آدرس این صفحه هست yoursite.com/cat?name=news و فراخوانی بشه صفحه مور نظر.
در کل این در حد یک نظر بود نه راهنمایی .
 
بالا