PDA

View Full Version : سوال: لطفا راهنماییم کنید.فوریه!کارنکردن htaccess



student91
شنبه 21 بهمن 1391, 09:21 صبح
سلام
این محتوای htaccess من هست .این فایل جایی که index.php هست،گذاشتم.
ولی اینگار نه اینگار ! یعنی redirect نمی کنه و هر صفحه ای اگر وجود داشته باشه داخلش می ره وگرنه خطا میده.
تو لوکال تست می کنم.


RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(css|pdf|gif|ico|jpg|js|png|swf|pdf|txt|php)$
# otherwise forward it to index.php
RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]

siavashsay
شنبه 21 بهمن 1391, 09:54 صبح
دوست عزیز مطمئنید این کد برای redirect کردن هست ؟!
این کدی هست که مقادیر رو GET رو در صورت وجود داشتن میگیره ! مثلا اگر صفحه شما اینطوری باشه :

http://www.site.com/index.php?id=iran
اون متغیر ایران رو به اینصورت میتونید بگیرید :

http://www.site.com/iran
در کد شما توضیح داده شده که اگر پوشه ای به نام iran وجود داشت به داخل اون پوشه بره - مثلا اگر پوشه ای به نام iran در سایت شما باشه میره داخل اون پوشه رو نشون میده در غیر اینصورت اون رو به عنوان یک متغیر GET دریافت میکنه !
این کد ربطی به redirect نداره :)

student91
شنبه 21 بهمن 1391, 10:01 صبح
من می خوام وقتی این آدرس داده میشه
url_site/iran
بره به index.php و هر آنچه بعد از url_site هست رو در یک متغیر بریزه که توی index.phpبتونم با استفاده از محتوای متغییر صفحه ای که باید بره رو مشخص کنم.
میشه بگید باید چی کار کنم؟
واقعا ممنون میشم راهنماییم کنید

siavashsay
شنبه 21 بهمن 1391, 10:32 صبح
اگر منظور شما این هست که - اگر کاربر اینطوری وارد کرد :

site.com/iran صفحه redirect شه به

site.com/index.phpباید بگم اینکار فک نکنم عملی باشه !
چون خود اون site.com/iran داخل صفحه index.php هست که داره یک متغیر رو فقط میگیره اونم از طریق GET ! حالا اگه شما بیاید و یک Redirect توی صفحه index.php بگذارید که به خود صفحه index.php بره یعنی دارید mirror یا همون آینه کار میکنید و این یک چرخه رو تولید میکنه که صفحه هیچ موقع ثابت نمیمونه و مدام داره ریدارکت میشه به خود همون صفحه !
اگر شما نمیخواد که از طریق GET متغیر رو بگیرید خوب چه نیازی دارید ؟! از راههای دیگه ای استفاده کنید برای دریافت متغیر خودتون ! مثل Session ها ! ( البته در حد پیشنهاد هست - باید فکر بشه روش )
اما بازم اگر توضیح بهتری بدید شاید بشه بهتر بهتون کمک کرد !

siavashsay
شنبه 21 بهمن 1391, 10:38 صبح
اما یک روش الان به ذهنم رسید !
اینو امتحان کنید :

if(isset($_GET['id'])){
$_SESSION['id']=$_GET['id'];
header("location:index.php");

}
این کد در صورتی که متغیر id از نوع GET وجود داشته باشه اون رو داخل یک متغیر id از نوع SESSION میریزه و صفحه رو به index.php ریدایرکت میکنه !
بعد توی صفحه index.php میتونید از این کد استفاده کنید :

if(isset($_SESSION['id'])){
$id=$_SESSION['id'];
//do anything with your ID
}
اینجا باز داریم میگیم که اگر متغیر id از نوع session وجود داشت اون رو بگیره و بقیه عملیاتی که مد نظرتون هست رو اجرا کنه !
موفق باشید

student91
شنبه 21 بهمن 1391, 11:02 صبح
ممنون از جوابتون.
برای توضیح بیشتر اگه به سایتی مثل http://www.iranprg.ir برید و روی یکی از لینک ها مثل تماس با ما کلیک کنید متوجه میشید آدرس به' http://www.iranprg.ir/تماس با ما ' تغییر می کنه و از روی این آدرس می فهمه چه محتوایی لود کنه.

این رو از طریق htaccess پیاده سازی کردن که هر آنچه بعد آدرس اصلی میاد رو تو متغییری می ریزند و با اون کار میکنند

من می خوام چنین چیزی پیاده سازی کنم .

siavashsay
شنبه 21 بهمن 1391, 11:17 صبح
خوب دوست عزیز من !
همون کد اول شما همین کارو میکرد !
کافی بود که شما یک فایل htaccess درست کنی ! اون کد ها رو توی اون بریزی و فایل رو root سایت بریزی !
توی اون کد تنظیم شده که متغیرها از طریق GET با مشخصه id بگیری !
بعد هرکاری خواستی با همون متغیر بکنی !
اما قضیه اینجاس که اون کد موقعی کار میکنه که شما Folder ای به نام اون متغیر که داره درست میشه نداشته باشی !
مثلا اگر Folder ای به نام iran داشته باشی دیگه iran رو به صورت یک متغیر GET نمیگیره بلکه اولیت با این هست که اون رو به عنوان مسیر بگیره - اگر اون پوشه وجود نداشت به عنوان متغیر میگیره !

student91
شنبه 21 بهمن 1391, 11:28 صبح
خوب مشکل من همین هست من این کد رو تو فایل htaccess گذاشتم ولی عمل نمی کنه و مثلا وقتی تو صفحه اصلی سایتم هستم و می زنم url_site/iran ،میره تو google و سرچ می کنه!

student91
شنبه 21 بهمن 1391, 13:24 عصر
ممنون مشکلم حل شد