PDA

View Full Version : سوال: مشکل htaccess



matrixhassan
چهارشنبه 22 آذر 1391, 16:30 عصر
با سلام شاید سوالم تکراریه چه کنم که درست نشد :

قضیه همون عوض کردن آدرس سایته .
من تعدادی آدرس دارم که هر کدم به بخشی اشاره داره مثلا :

http://www.domain.com/index.php?page=register
http://www.domain.com/index.php?page=login
http://www.domain.com/index.php?page=exit

میخواستم تبدیل بشن به :



http://www.domain.com/register
http://www.domain.com/login
http://www.domain.com/exit



و توی htaccess توی فولدر public این کدهارو نوشتم :




RewriteEngine on

RewriteRule ^(.*).htm$ $1.php [nc]

و


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


و تقریبا تمام گزینه های که تونستم تو این سایت پیدا کنم نوشتم و هیچ اتفاقی نیافتاد.

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

-میخواستم بدون آیا کدها اشتباهه که اگه هست لطفا راهنمایی کنید .
-یا اینکه بعد از نوشتن این دستورات باید لینک رو تو تمام صفحات php تبدیل کنم به کد بهینه شده یعنی خودش عوض نمیکنه ؟
یا موارد دیگه هست که باید انجام بدیم.
ممنون میشم کمک کنید

thacker
چهارشنبه 22 آذر 1391, 17:02 عصر
فکر کنم این میشه :



RewriteRule ^([^/]*)$ index.php?page=$1 [L]

mamali-mohammad
چهارشنبه 22 آذر 1391, 18:47 عصر
RewriteRule ^([^/]+)/$ page.php?page=$1

matrixhassan
چهارشنبه 22 آذر 1391, 19:30 عصر
این کدی که شما گفته بودین رو نوشتم اولا اون قسمت تغییر نکرد دوما نمایش اطلاعاته پایگاه دادم نیومد
کمک فقط این قسمت سایتم مونده ها دوستان

mamali-mohammad
چهارشنبه 22 آذر 1391, 19:40 عصر
مطئمن باش apache تنظیم خاص خودشو داره
روی یه هاست دیگه تست کن

matrixhassan
چهارشنبه 22 آذر 1391, 21:08 عصر
نمیشه عزیز من دیگه همه چیزو تو این هاست انجام دادم فقط این قسمتش مونده یا باید درست کنم یا دیگه این کارو نکنم اگه روش دیگه ای هست کمک کنید خواهشا
من میخواستم بدونم اگه تو فایل htaccess این کدو بنویسم کافیه یا باید تو فایلهای php به جای

http://www.domain.com/index.php?page=register

اینو بنویسم


http://www.domain.com/register (http://www.domain.com/index.php?page=register)

thacker
چهارشنبه 22 آذر 1391, 22:03 عصر
توی خط دوم نوشتی که فایل های php رو به عنوان htm بشناسه ...
شاید دلیلش این باشه ... یه بارم همون کد رو index.htm بزن توی htaccess ...

matrixhassan
پنج شنبه 23 آذر 1391, 11:59 صبح
من اونم امتحان کردم وقتی کدی که شما دادین رو میزنم کلا فایلهای css ام کار نمیکنند انگار نمی خواد درست بشه شایدم من بلد نیستم

یه سوال دیگه من تو فایل index ام تقریبا چیزهای زیادی فراخوانی می کنم یعنی هر چی که مربوط به نمایش تو فایل index ام نمایش داده میشه به وسیله تابع مثل صفحه ثبت نام ، ورود، نمایش و محتویات ولی پردازششون تو صفحه های جداگانه ست می خواستم بدون این مشکلی نداره از قبیل بهینه بودن یا اینکه بعدا که سایت بازدیدش رفت بالا به مشکل برنخوره ؟

thacker
پنج شنبه 23 آذر 1391, 13:25 عصر
Css کار نمیکنه چون باید آدرسش رو بصورت کامل بدید : http://Yoursite.com/Css/Style.css

رضا قربانی
پنج شنبه 23 آذر 1391, 21:25 عصر
من اونم امتحان کردم وقتی کدی که شما دادین رو میزنم کلا فایلهای css ام کار نمیکنند انگار نمی خواد درست بشه شایدم من بلد نیستم
وقتی از توابع htaccess استفاده می کنی باید تمامی آدرس دهی ها رو به صورت کامل آدرس دهی کنید

اینجا هم بهتون خیلی کمک می کنه :http://barnamenevis.org/showthread.php?276467-%D8%AA%D8%B1%D9%81%D9%86%D8%AF%D9%87%D8%A7%DB%8C-.htaccess&p=1220621#post1220621

موفق باشید

matrixhassan
سه شنبه 28 آذر 1391, 15:44 عصر
با سلام خدمت دوستان و آقای رضا قربانی

من فایلهای اصلی رو گذاشتم ولی دیگه مجبور شدم خیلی خلاصه و با تغییر بزارم اگه کدهاشو ببینین متوجه اوضا میشین
3 تا فایل یکی اصلی دومی فایلی که فراخوانی توش صورت میگیره و سومی فایل htaccess

حالا نگاه کنید ببینید درست شدنیه نشدنیه و هم از نظر بهینه بودم مشکلی داره نداره اگه تونستین که درستش کنید خیلی ممنون میشم

با تشکر

Unique
سه شنبه 28 آذر 1391, 17:26 عصر
از اونجایی که میگین با دستورات بالا مشکل پیدا کردین پس میتونیم مطمئن باشیم ماژول mod_rewrites حتما نصبه !
این دو خط را هم امتحان کنید ! من الان چندین سایت دارم که با این داره کار میکنه :


RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)$ index.php?page=$1

این اصلا نباید css ها یا عکس های شما را دچار مشکل کنه.

matrixhassan
سه شنبه 28 آذر 1391, 20:31 عصر
جلل خالق

بازم نشد تو لوکالم امتحان کردم تو هاستم

thacker
سه شنبه 28 آذر 1391, 21:49 عصر
خط آخر htaccess رو به صورت زیر تغییر بدید :



RewriteRule ^([a-zA-Z0-9]+)$ home.php?page=$1

matrixhassan
چهارشنبه 29 آذر 1391, 00:11 صبح
دوست گلم تو برنامه من همون index و فرضا home گذاشتم ممنون از جوابتون.
مگه تو فایلی که من گذاشتم شما امتحان میکنید جواب میده ؟ یا تو اون حالت ؟

Unique
چهارشنبه 29 آذر 1391, 00:24 صبح
منظورتون چیه که نشد ؟
خطای 404 میده ؟

matrixhassan
چهارشنبه 29 آذر 1391, 00:35 صبح
نه آدرس لینک عوض نمیشه

یعنی مثلا بشه

http://www.domain.com/register (http://www.domain.com/index.php?page=register)

thacker
چهارشنبه 29 آذر 1391, 01:21 صبح
من روی فایلی که گذاشتی امتحان کردم و خط آخر رو همونطوری که گفتم تغییر دادم و برنامه جواب داد ...!

Tarragon
چهارشنبه 29 آذر 1391, 06:47 صبح
داداش نمی شه یعنی الان ادرس http://www.domain.com/register رو می زنی http://www.domain.com/index.php?page=register رو نمی یاره؟

matrixhassan
چهارشنبه 29 آذر 1391, 12:30 عصر
منم تو لوکال امتحان کردم نشد
دوست عزیز thacker میشه شما فایلهای با اونا امتحان کردینو بزارین ما هم امتحان کنیم شاید اونا جواب بده

thacker
چهارشنبه 29 آذر 1391, 12:48 عصر
همون فایلی که خودتون ضمیمه کردید رو اجرا کنید ...
من فقط خط آخر htaccess رو به این صورت تغییر دادم :

RewriteRule ^([a-zA-Z0-9]+)$ home.php?page=$1

Unique
چهارشنبه 29 آذر 1391, 13:00 عصر
دوست عزیز به نظر من شما یک اشتباه لپی کوچیک دارین میکنین :

این باید حتما جواب بده :


RewriteRule ^([a-zA-Z0-9]+)$ index.php?page=$1

حالا اگه جواب نمیده

1 - شما نمیدونم چرا میگین آدرس باید عوض بشه ! فکر کنم شما یه موضوعی توی ذهنتون اشتباه شکل گرفته ، شما باید بزنین http://www.domain.com/register و انتظار داشته باشین که محتوای http://www.domain.com/index.php?page=register را ببینین ، آدرس مرورگر هیچ تغییر نمیکنه و تغییر در سمت سرور اتفاق میفته ! من احساس کردم شما میزنین http://www.domain.com/index.php?page=register و انتظار دارین آدرس به http://www.domain.com/register تغییر پیدا کنه که اشتباه هست.

2 - اگه با زدن http://www.domain.com/register شما به خطای 404 میخورین باید مطمئن بشین که mod_rewrite نصبه ، برای این کار باید توی خروجی phpinfo در قسمت apache2handler مقادیر Loaded Modules را بررسی کنید.

3 - دوستمون میگن اسم فایل شما Home.php هست و نه Index.php یکبار از اسامی فایل ها مطمئن بشین.

امیدوارم مشکلتون حل بشه.

matrixhassan
چهارشنبه 29 آذر 1391, 13:10 عصر
شما یعنی هیچ تغییری تو فایلها ندادین اگه ندادین که اصلا کار نمیکنه چون من یادم رفت ادرسهارو تو اون فایلی که ارسال کردم ویرایش کنم چون اسم فایل home ولی آدرس
http://localhost/advertise/index.php?page=register
به این صورت که وقتی میزنی اصلا کار نمیکنه پی تغییر دادین ؟

من میخوام همون آدرس http://www.domain.com/register نمایش داده بشه و اگه آدرس http://www.domain.com/index.php?page=register زده شد هیچی نیاره همین .

thacker
چهارشنبه 29 آذر 1391, 13:14 عصر
دوست عزیز درسته شما آدرس ها رو ویرایش نکردید ...
اما دفعه اولی که آدرس http://127.0.0.1/register رو زدم خطای 404 داد ... بعد که خط آخر رو تغییر دادم دیگه خطا نداد و صفحه باز شد ...
در ضمن از همین کد ، من برای 2-3 تا سایت استفاده کردم و جواب داده.

matrixhassan
چهارشنبه 29 آذر 1391, 14:35 عصر
نمیدونم بلاخره کار نکرد با این شرایط من دیگه نمیدونم مشکل کجاست .

thacker
چهارشنبه 29 آذر 1391, 14:52 عصر
به نظرم کدهاتون رو آپلود کنید ، بعد اطلاعات هاست رو بدید یکی براتون درستش کنه ...
موفق باشید

matrixhassan
چهارشنبه 29 آذر 1391, 15:31 عصر
راه دیگه نداره من کلی اطلاعات دارم تو اون سایت اگه فایلهارم ناقص بزارم هم که نمیشه ؟

thacker
چهارشنبه 29 آذر 1391, 15:38 عصر
راه دیگش اینه که اول از همه از هاستتون مطمئن بشید و اگه مشکلی نداشت ، شروع کنید به چک کردن اسکریپتتون ...

matrixhassan
چهارشنبه 29 آذر 1391, 15:49 عصر
من تو هاست امتحان کردم دستورات دیگه کار میی کنند مثلا نشان ندادن عکسها در مرورگر کاربر این ج.اب میده هم ازشون پرسیدم گفتن مشکلی ندارن.

رضا قربانی
چهارشنبه 29 آذر 1391, 20:51 عصر
با سلام خدمت دوستان و آقای رضا قربانی

من فایلهای اصلی رو گذاشتم ولی دیگه مجبور شدم خیلی خلاصه و با تغییر بزارم اگه کدهاشو ببینین متوجه اوضا میشین
3 تا فایل یکی اصلی دومی فایلی که فراخوانی توش صورت میگیره و سومی فایل htaccess

حالا نگاه کنید ببینید درست شدنیه نشدنیه و هم از نظر بهینه بودم مشکلی داره نداره اگه تونستین که درستش کنید خیلی ممنون میشم

با تشکر

خسته نباشید دوست عزیز
شما باید بیشتر در مورد این فایل تمرین کنید که من لینکش آموزش که توی همین سایت هست رو بهتون دادم اما فکر نکنم زمانی برای یادگیریش گذاشته باشید . شما باید عمیق یاد بگیرید نه اینکه هر تیکه کد رو از جایی جایگزین کنید .
htaccess : http://barnamenevis.org/images/misc/download.gif (http://barnamenevis.org/showthread.php?276467) برای خودش یه زبان برنامه نویسیه.
این نوع لینک دادن بهینه هست ولی بهینه تر اینه که در آخرش .html بذارید (http://www.domain.com/register.html) که اونم باز برای خودش یه سری دستور داره که توی آموزشی که گفتم هست.

شما وقتی میگید صفحه home.php پیشفرضه پس چرا توی آدرس دهی ها از index.php استفاده می کنید.

بفرمایید آماده و منظم در اختیارتون . عملیات بر روی لینک ثبت نام شما اعمال شده . نگاه کنید و لینک های دیگه رو خودتون بسازید.

موفق و پیروز باشید

matrixhassan
چهارشنبه 29 آذر 1391, 21:56 عصر
با سلام مجدد

این فایلی که گذاشتینو من ورداشتم و تست کردم ولی اینم که جواب نمیده شما اومدین و اسن دستور گذاشتین

RewriteEngine On

DirectoryIndex home.php


RewriteRule ^([a-zA-Z0-9]+)$ home.php?page=$1





تا اینجا درست و امدین تو صفحه اول نوشتین



if($_GET["page"]=="register")
{
echo'<h1 style=" color:red;text-decoration:blink">مشکل شما برطرف شده است</h1>';
}






و آدرس لینکه ثبت نام رو هم کردین

http://localhost/Test5809/register
یعنی اگه روی ثبت نام کلیک بشه یعنی آدرس http://localhost/Test5809/index.php?page=register که تبدیل شده به آدرس بالا باید اون echo مربوطه پیغام بده که نمیده ؟

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

با تشکر

thacker
چهارشنبه 29 آذر 1391, 22:35 عصر
مشکل از سیستم شماست ...
کدهایی که دوستمون گذاشت جواب میده ...
لطفا چک کنید سیستمتون رو...

matrixhassan
چهارشنبه 29 آذر 1391, 23:34 عصر
با سلام

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

matrixhassan
جمعه 01 دی 1391, 12:57 عصر
با سلام مجدد

حالا یه مشکل دیگه پیش اومد که جوابشو نتونستم پیدا کنم.

من آدرس :

http://localhost/adv/index.php?p=per&id=g&code=5
رو میخوام به این تبدیل کنم :
http://localhost/adv/per/g/5
با دستور :


RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ index.php?p=$1&id=$2&code=$3 [QSA,NC,L]




تو اینا مشکلی نیست مشکل اینه که تمام عکسهای که درست توی فولدور images هستو میاره و عکسهای رو که در فولدور های داخل images هستو نمیاره مثلا images/banner/ عکسهای توی بنر و نمیاره ؟

طبق آموزشم بند 77 هم عمل کردم آدرسها همه مطلقه و نمیدونم مشکل کجاست ؟

با تشکر

matrixhassan
دوشنبه 18 دی 1391, 12:07 عصر
با سلام مجدد

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

مشکل در ریدایرکت کردن هست چهار تا آدرس به سایتم مراجعه میکنند :

www.domain.com (http://www.domain.com)
domain.com (http://domain.com)
domain.ir (http://domain.ir)
www.domain.ir (http://www.domain.ir)

خوب وقتی یه دستور برای یکی از اینا می نویسم عمل ریدایرکت انجام میشه :




RewriteCond %{http_host} ^domain\.ir [NC]

RewriteRule ^(.*)$ http://www.domain.com/ [R=301,NC,L]



ولی وقتی برای همه می نویسم کار نمیکنه :




RewriteCond %{http_host} ^domain\.ir [NC]
RewriteCond %{http_host} ^domain\.com [NC]
RewriteCond %{http_host} !^www\.domain\.ir [NC]
RewriteRule ^(.*)$ http://www.domain.com/ [R=301,NC,L]




و وقتی برای هر کدوم به طور جداگانه می نویسم اصلا کار نمی کنه .

ممنون میشم راهنمایی کنید .