• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
rewriteEngin
#1
سلام به دوستان من يه سايتي دارم ميخوام url هاشو با RewriteEngine درست كنم.
مثلا اين آدرسو
http://localhost/MySite/index.php?show=Main&group=19
تبديل كنم به
http://localhost/MySite/Main/19/
براي همين اين كدو تو فايل htaccess نوشتم
کد پی‌اچ‌پی:
Options +FollowSymlinks 
 RewriteEngine on 
 RewriteRule 
^(.+)/(.+)/ index.php?show=$1&group=$[nc
ولي عوض اين كه همچين صفحه ايرو نشون بده
[عکس: dqmj34oxi3sme6wedvpk.jpg]
اينو نشون ميده
[عکس: zv9he0denmnbk2sm7lw.jpg]
يعني عكس ها و رنگها و فونت ها و... هوتوتو
اشكال كار كجاس؟
  پاسخ
تشکر شده توسط :
#2
مشکل از نوع تعریف rule هست.
شما در این rule :
نقل قول: RewriteRule ^(.+)/(.+)/ index.php?show=$1&group=$2 [nc]
دارید میگید
نقل قول:/هرچیزی/هرچیزی/دامین
خوب اگر شما ادرس دهی فایل های سی اس اس و عکس ها رو ظاهری داده باشید یعنی /image/eng.gif معلومه ایجا درست کار نمی کنه. پیشنهاد میدم که رول هاتون رو درست انتخاب کنید تا از هک شدن هم جلوگیری بشه.
درستش اینه

نقل قول: RewriteRule ^MySite/Main/([0-9]+)? index.php?show=$1&group=$2 [nc]

درضمن کلا برای کار کردن با این گونه موارد بهتره شما در لوکال هاست دامین مجازی تعیریف کنید. تا آنچه می نویسید روی لوکال با اونی که آپلود می کنید رو هاست یکی باشه. مخصوصا رو آدرس دهی تصاویر
  پاسخ
تشکر شده توسط : amir.s arlabbafi alic
#3
ممنون zoghal جان ، به نظر منم همين طوره كه ميگي يعني آدرس عكسهارو قاطي ميكنه .
در ضمن منظورت از اينكه هك نشه چي بود ؟ مگه با rewrite Rule احتمال هك شدن هست ؟
  پاسخ
تشکر شده توسط :
#4
ببینید. همیشه میگن زمانی که اسکریپت شما پارامتر میگیره . باید چک کنید. که ایا پارامتر ارسالی صحیح هست یا خیر. در واقع روش sql injection هم به این صورت عمل میکنه که با ارسال یک سری دستورات sql در این پارامتر ها باعث اختلالاتی در سیستم می شود


در مثالی که من زدم. و موردی که شما ذکر کردید. فرقش اینه که شما گقتید (.+) هرچیزی
اما من گفتم /([0-9]+) فقط مقدار عددی دریافت کنه.
پس یک فیلتر قوی روی اسکریپتم گزاشتم. که مقادیر نا مربوط بهش ارسال نشه
  پاسخ
تشکر شده توسط : oia admin alic
#5
نقل قول:مشکل از نوع تعریف rule هست.
شما در این rule :

نقل قول : RewriteRule ^(.+)/(.+)/ index.php?show=$1&group=$2 [nc]

دارید میگید

نقل قول :/هرچیزی/هرچیزی/دامین

خوب اگر شما ادرس دهی فایل های سی اس اس و عکس ها رو ظاهری داده باشید یعنی /image/eng.gif معلومه ایجا درست کار نمی کنه. پیشنهاد میدم که رول هاتون رو درست انتخاب کنید تا از هک شدن هم جلوگیری بشه.
درستش اینه

نقل قول : RewriteRule ^MySite/Main/([0-9]+)? index.php?show=$1&group=$2 [nc]


درضمن کلا برای کار کردن با این گونه موارد بهتره شما در لوکال هاست دامین مجازی تعیریف کنید. تا آنچه می نویسید روی لوکال با اونی که آپلود می کنید رو هاست یکی باشه. مخصوصا رو آدرس دهی تصاویر

من پستتو خوندم ولی چیزی سرم نشد!Big Grin
دوست عزیز منم این مشکلو دارم و وقتی از این روش استفاده میکنم عکسهام به نمایش در نمیادHuh
من میخواستم بپرسم چیکار کنم این مشکل رفع بشه؟(فایل css یا تگ های کد نویسیم رو باید ویرایش کنم؟)

سوال دومم اینه که من توی لوکال چطوری میتونم از دامین های مجازی استفاده کنم!Sad
یعنی چجوری به طور اتوماتیک در لوکال توسط htaccess سابدامین بدم!Idea
روششو روی هاست میدونم ولی هر کاری کردم رو لوکال نمیشد و خطای 404 میدادUndecided ایا روشی هست؟ مثلا چیزی رو فعال کنم!؟Blush
نرم افزار لوکال هاستمم XAMPP هست...Wink


باتشکر از راهنماییهاتونHeart
  پاسخ
تشکر شده توسط :
#6
به جای استفاده از لینک های local باید از لینک کامل استفاده کنی:
مثال:
کد:
http://www.example.com/css/style.css
به جای:
../css/style.css
این چنین مواردی باید همه جای برنامه رعایت شود تا مشکلی پیش نیاید.
پیشنهاد من اینه که یک ثابت مثلا به نام PATH در ابتدای فایل php تون تعریف کنید و آدرس روت سایتتون رو بنویسید بعد بصورت زیر عمل کنید:
کد:
<?=PATH?>css/style.css
  پاسخ
تشکر شده توسط :
#7
من همه این کارا رو کردم !
ولی بازم درست نشد!Blush
  پاسخ
تشکر شده توسط :
#8
کد پی‌اچ‌پی:
RewriteEngine on 
RewriteCond 
%{REQUEST_FILENAME} !-f
RewriteCond 
%{REQUEST_FILENAME} !-d
 RewriteRule 
^(.+)/(.+)/ index.php?show=$1&group=$[nc
  پاسخ
تشکر شده توسط : faghani
#9
روی لوکال ایراد نداره؟Huh
مشکل داره هنوز...Undecided

دقیقا باید چیکار کنم؟Confused
  پاسخ
تشکر شده توسط :
#10
شما باید برای نشونی هایی که وجود داره بگی از از روش استفاده نکنه یا شرط بزاری که در صورتی که فایل به .js و .css و .gif و ... ختم نشده بود از این الگو استفاده کنه
این الگو رو هم تست کن
کد:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)/(.+)/ index.php?show=$1&group=$2 [nc]
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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