• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل با .htaccess
#1
سلام خدمت همه دوستان و اساتید محترم ...
یعنی از دست سرور های مختلف دیگه دارم دیوونه میشم که هر کدومشون یه جور تنظیمات دارن ...

بگذریم ... من یه پروژه دارم که تا زمانی که رو سیستم خودم دارم اجراش میکنم خیلی خوب و بدون مشکل کار میکنه ... منظورم قسمت URL ها هست .

کدی که تو .htaccess نوشتم این هستش :

کد:
RewriteEngine on

RewriteCond %{REQUEST_FILE} !-f
RewriteCond %{REQUEST_FILE} !-d

RewriteRule ^(.*)$ root/index.php?url=$1 [QSA,L]
خوب وقتی من پروژم رو upload میکنم رو هاست دیگه URL ها کار نمیکنه و به جای اینکه بره تو پوشه root و index رو بخونه فایل های root رو نمایش میده ..(نه فولدر روت شاخه اصلی رو)

حالا نمیدونم مشکل از کجاست و دارم روانی میشم هر کاری هم میکنم درست نمیشه ... لطفا به داد برسین ...

در ضمن یه کد گذاشتم به جای کد بالا تا حدی کار میکنه اما 2 تا مشکل دارم باهاش داخل فولدر نمیره برای خواندن فایل باید حتما تو root باشه فایل (البته با آدرس دهی کامل این مشکل برطرف میشه اما مشکلات دیگه پیدا میشه)و اینکه اگه user اسم فولدر و نام فایل رو داشته باشه و بزنه مستقیم براش اون صفحه رو باز میکنه که اینم نمیخوام باشه ...
کد:
Options +FollowSymlinks
RewriteEngine on

Options -indexes

ErrorDocument 401 http://www.Kcmos.com/
ErrorDocument 403 http://www.Kcmos.com/
ErrorDocument 404 http://www.Kcmos.com/
ErrorDocument 500 http://www.Kcmos.com/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

اینم کد دومی هستش ...
و اینکه تفاوت REQUEST_FILE و REQUEST_FILENAME تو چی هستش ؟؟
اگه ممکن رو کد خودم راهنماییم کنید که چجوری و چه تغییری بدم که کار کنه ....

میخوام هرچی کاربر تو آدرس بار میزنه بره به فولدر root و فابل index.php یا حالا هر فولدری با هر فایلی و اینکه همه چی از اونجا شروع بشه و کاربر نتونه با آدرس دهی مستقیم صفحه رو باز کنه ... کد اول من دقیقا رو سیستم خودم این کار رو انجام میده اما رو هاست نه ....

عجیب گیرم ... مرسی از راهنمایی هاتون

و یه سوال دیگه هم داشتم و اون اینه که چرا namespace هام کار نمیکنن رو هاست اما رو سیستم خودم کار میکنه ؟؟
من از auto load موتور twig استفاده کردم ... کار خاصی باید انجام بدم قبل upload ?
  پاسخ
تشکر شده توسط :
#2
مشکل namespace ها رو حل کردم و autoload شدن رو یعنی مجبور شدم خودم بنویسم یه autoload چون twig کار نکرد ... فقط الان لطفا کمک کنید برای فایل htaccess ممنون میشم ...
  پاسخ
تشکر شده توسط :
#3
من سوالم زو تکمیل بکنم ...من یه دستوری میخوام که داخل فایل htaccess بگذارم و بوسیله اون تمام URL ها هر چی که هست به یه صفحه مشخص بره ... مثلا تو شاخه main و فایل index.php و اینکه اگه من یه فولدر به اسم app داشتم و داخلش مثلا یه فایل به اسم session.php اگه این آدرس رو مستقیم بزنم صفحه session رو باز نکنه و به صفحه main/index.php بره و مقدار app و session.php رو ببره اونجا
امیدوارم تونسته باشم کامل توضیح بدم ... و خیلی هم گیر این هسنم ممنون میشم کمک کنید
  پاسخ
تشکر شده توسط :
#4
با کمی search تو اینترنت و دستکاری کردن کد ها به این کد رسیدم :
کد:
Options +FollowSymLinks
Options +Indexes
RewriteEngine On

RewriteRule ^(.*)$ root/index.php?url=$1 [QSA,L]

این الان کار میکنه و هرچیزی که باشه فقط به قسمت root/index.php میره(در واقع شروط رو برداشتم کار خاصی نکردم )حالا سوال من اینجاست که اصلا کار من درسته ؟؟ که همه چیز رو به صفحه root/index.php میفرستم و از اونجا میخونم ؟؟ اگه آره پس چرا اکثر کد هایی که من دیدم شرط گذاشته که اگه فایل یا دایرکتوری نبود به این صفحه برو ...
  پاسخ
تشکر شده توسط :
#5
سلام،
من زیاد با htaccess تا حالا درگیر نشدم، ولی همونجور که خودت گفتی هرجا دیدم برای فایل و پوشه‌ها شرط میزارن.
غایب
  پاسخ
تشکر شده توسط :
#6
(۱۳۹۵ شهریور ۰۲, ۱۱:۱۷ ب.ظ)Alaa نوشته: سلام،
من زیاد با htaccess تا حالا درگیر نشدم، ولی همونجور که خودت گفتی هرجا دیدم برای فایل و پوشه‌ها شرط میزارن.

اتفاقی که الان افتاده اینه که بدون شرط دیگه فایل هام مثل عکس ها خونده نمیشن ... ولی وقتی شرط میگذارم برای قایل ها این مشکل حل میشه ...
یعنی با این شرط :
کد:
RewriteCond %{REQUEST_FILENAME} !-f
میگم اگر که فایل موجود نبود برو به اون صفحه اصلی ... حالا با این شرط عکس هام نمایش داده میشن اما اگر کسی آدرس یک فایل php رو رو هاست من داشته باشه و مستقیم وارد کنه بازم میتونه ببینتش ...من این و نمیخوام ... و میخوام تحت هر شرایطی بفرستتش به اون صفحه ای که من میخوام و من از اونجا مدیریت کنم سایتم رو با url ها ... وقتی هیج شرطی نگذاریم همین میشه اما عکس ها load نمیشن دیگه ... و وقتی این شرط رو میگذاریم مشکل من پیدا میشه ... اگر کسی میدونه یه راهنمایی انجام بده ... ممنون
  پاسخ
تشکر شده توسط :
#7
سلام برای این که کاربران نتونن فایل ای سیستمی شمارو ببینن مثلا شما فایلی در مسیر
t//y/u/i/o/p/l/test.php
دارید و نمیخواید که کاربر به هیچ وجه این صفحرو ببینه یعنی اینکه با وارد کردن ادرس بالا صفحه نمایش داده نشه ببهتره در بالای همه صفحات بیاین چک کنید که ایا این صفحه به صورت مستقیم وارد شده یا نه برای مثال کد زیر
کد پی‌اچ‌پی:
if(!isset($_SERVER['HTTP_REFERER']))
{
    
ob_start();    
    
header('location:../../login.php');
    
ob_end_flush(); 
    exit();


یا مثلا اینکه با وارد کردن مسیر بالا با ارور مواجه بشه و بعد از مدتی به صفحه بعد منتقل بشه ....Wink
  پاسخ
تشکر شده توسط :
#8
(۱۳۹۵ شهریور ۰۴, ۰۳:۴۱ ق.ظ)kasbookar نوشته: سلام برای این که کاربران نتونن فایل ای سیستمی شمارو ببینن مثلا شما فایلی در مسیر
t//y/u/i/o/p/l/test.php
دارید و نمیخواید که کاربر به هیچ وجه این صفحرو ببینه یعنی اینکه با وارد کردن ادرس بالا صفحه نمایش داده نشه ببهتره در بالای همه صفحات بیاین چک کنید که ایا این صفحه به صورت مستقیم وارد شده یا نه برای مثال کد زیر
کد پی‌اچ‌پی:
if(!isset($_SERVER['HTTP_REFERER']))
{
    
ob_start();    
    
header('location:../../login.php');
    
ob_end_flush(); 
    exit();


یا مثلا اینکه با وارد کردن مسیر بالا با ارور مواجه بشه و بعد از مدتی به صفحه بعد منتقل بشه ....Wink

ممنون از راهنمایی خوبت ... آره میشه مدیریت کرد اینجوری اما تعداد فایل ها خیلی زیاد هست و من نمیخوام اول هر فایل این پروسه رو انجام بدم گفتم شاید راه حلی باشه برای این کار با htaccess مثلا یه شرط وجود داشته باشه که تمام فایل ها رو بفرسته به یک صفحه خاص اما فقط تصاویر رو بتونه بخونه ..
  پاسخ
تشکر شده توسط :
#9
نقل قول:من زیاد با htaccess تا حالا درگیر نشدم، ولی همونجور که خودت گفتی هرجا دیدم برای فایل و پوشه‌ها شرط میزارن.
هر کی با htaccess در افتد بر افتد این فایل در صورتی که قدرت بسیار بالایی داره بسیار بسیار هم سخته شما هم زیاد سرب سرش نذار بد میزنتت زمین TongueTongue
نقل قول: تمام فایل ها رو بفرسته به یک صفحه خاص اما فقط تصاویر رو بتونه بخونه ..
فک کنم لینک زیر مشکلتو حل کنه
https://www.google.com/webhp?sourceid=ch...but+images
  پاسخ
تشکر شده توسط :
#10
ممنون فرشاد جان ... یه گشتی زدم و راه حل رو پیدا کردم :
کد:
RewriteCond %{REQUEST_URI}  !(\.png|\.jpg|\.gif|\.jpeg|\.bmp)$
با این شرط میشه پسوند فایل هایی که میخوای خونده بشه رو معرفی کنی...
الان دستور کاملش این میشه :
کد:
Options +FollowSymLinks
Options +Indexes
RewriteEngine On

RewriteCond %{REQUEST_URI}  !(\.png|\.jpg|\.gif|\.jpeg|\.bmp)$

RewriteRule ^(.*)$ root/index.php?url=$1 [QSA,L]

با این کد تمام URL ها به سمت فایل index.php میرن که تو پوشه root هست فقط فایل هایی با پسوند jpg,gif,png,jpeg,bmp اینا اگه مسیر فایل درست باشه مستقیم خونده میشه اگه نه که مثل بقیه باهاش رفتار میشه و به همون صفحه root/index.php میره ...

نقل قول: هر کی با htaccess در افتد بر افتد این فایل در صورتی که قدرت بسیار بالایی داره بسیار بسیار هم سخته شما هم زیاد سرب سرش نذار بد میزنتت زمین TongueTongue
Big GrinBig GrinBig GrinBig GrinBig Grin
آره واقعا اما من این مبحث و خیلی خیلی دوست دارم و برام شیرین هستش ... کار با URL ها و htaccess خیلی جالب و برای من جذاب هستش ...
بازم ممنون مثل همیشه
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان