تغییر موقعیت مکان جاری با ثابت ماندن url و حفظ مسیر نسبی

NabiKAZ

Well-Known Member
سلام ،

از اونجا که جزئیات هر بخش کلی از سایت رو در یه شاخه مجزا قرار میدم. فایلهای صفحه اول رو در شاخه main قرار میدم. زمانی که فایل index.php در ریشه اجرا میشه ، باید کاربر به شاخه main هدایت بشه.
در PHP این دستور صفحه رو به مسیر مورد نظر هدایت میکنه ضمن عوض شدن url ، درست مثل این میمونه که در شاخه main قرار داریم و مسیر های نسبی ، نسبت به اون شاخه باید داده بشه.
کد:
Header ("Location main/index.php");
اما تصمیم داشتم که url همچنان url قبلی باقی بمونه ، اما مسیرهای نسبی همچنان تغییر نکنه و مثل این باشه که در main هستیم.
در نتجه به نظرم اومد از mod_rewrite کمک بگیرم ، اینطوری:
کد:
RewriteRule ^$ main/index.php
اینطوری اگر تنها آدرس سایت نوشته بشه، به شاخه main هدایت میشه و url هم تغییری نمیکنه . اما مشکل این روش هم اینه که مشابه include عمل میکنه و مسیر ها باید نسبت به ریشه داده بشه در صورتی که من میخوام همچنان مسیر های نسبی به نسبت main تعریف بشن.
چه راهی پیشنهاد میکنید؟

یکمی در هم برهم شد ولی خیلی سعی کردم منظورم رو برسونم.

تشکر
نبی
 
آخرین ویرایش:

sunrise

Member
البته منظورت رو خوب متوجه نشدم اما ببين مي توني با استفاده از تابع getcwd و chdir كاري رو كه ميخواي انجام بدي ، چون من تويه يه پروژه همين كار رو كردم.
 
البته منظورت رو خوب متوجه نشدم اما ببين مي توني با استفاده از تابع getcwd و chdir كاري رو كه ميخواي انجام بدي ، چون من تويه يه پروژه همين كار رو كردم.

شما در مورد اين موضوع يك مثال زديد كه ظاهرا بخاطر تغيير سرور سايت اين مثال حدف شده است. اما من يك كپي از اون مثال را دارم و در اينجا كپي ميكنم.


اگه مثلاً فايل index.php شما داخل فولدر admin قرار داره براي اينکه بتونيد به فايل هاي include که در يک مرحله بالاتر از فولدر admin قرار داره بايد در فايل index.php داخل فولدر admin کد زير رو اضافه کنيد:

PHP:
define('INCLUDE_DIRECTORY', '../');

و بعد بايد از اين INCLUDE_DIRECTORY براي دسترسي به فايل هاي داخل include بصورت زير استفاده کنيد. مثلاً فرض کنيد ميخواهيم به فايل config.php که داخل فولدر include قرار داره دسترسي داشته باشيم.

PHP:
require_once(INCLUDE_DIRECTORY . 'includes/config.php');

و چون ممکنه اين INCLUDE_DIRECTORY براي مکان هاي ديگه از لحاظ آدرس دهي متفاوت باشه مي تونيد داخل يک فايل مثلاً با نام global.php در روت (که هميشه داخل تمامي فايل ها require ميشه) مقدار زير رو اضافه کنيد:

PHP:
chdir(INCLUDE_DIRECTORY);

تا مسيرها هميشه درست تنظيم شوند که ديگه در اين صورت به جاي نوشتن کد بصورت بالا جهت require کردن بايد آن را به اين صورت نوشت:

PHP:
require_once('includes/config.php');




اگر لطف كنيد در مورد 2 كد آخر توضيح بديد، ممنون ميشوم. :)
 

جدیدترین ارسال ها

بالا