PDA

View Full Version : سوال: عمل نکردن mod_rewrite در htaccess



DR.HTML
یک شنبه 18 خرداد 1393, 21:01 عصر
سلام

دوستان خواستم ادرس هامو که با متد گت فرستاده میشن تغیر بدم
البته همین اول بگم جستجو کردم و مطالب زیبادیو دیدم اما هیچکدوم جواب کار ممن نبودن . مطمئنم که ماژول rewrite روشنه چون توی phpinfo بودش روی دوتا Wamp و xamp تست کردم اما کار نمیکرد
اسم فایل هم درسته چون وقتی غیر فعال میکنم ماژول رو ارور میده

با این تفاسیر
سوال من سادست فرض مثال من یه index.php دارم که با متد get مقداریو به صفحه test.php میفرسته که ادرس میشه localhost/test.php?name=ali حالا من میخوام ادرس به شکل localhost/name/ali بشه
این محتوای فایل ایندکس
<?php
echo<<<EOL
<form action="test.php" method="get">
<input name="name" type="text" />
<input name="" type="submit" />
</form>
EOL;
?>
محتوای TEST.PHP
<?php
$jj=$_GET['name'];

echo "$jj";
?>
محتوای htaccess
RewriteEngine On
RewriteRule ^user/([^/]*)\.html$ /test.php?name=$1 [L]



با تشکر

Mohammadsgh
یک شنبه 18 خرداد 1393, 21:55 عصر
اگه با wamp هستید.روی آیکنش یه کلیک کنید و از منوی (apache modules, apache) برید و تیک rewrite_module رو بزنید.
این کارم کردید؟

DR.HTML
یک شنبه 18 خرداد 1393, 22:35 عصر
اگه با wamp هستید.روی آیکنش یه کلیک کنید و از منوی (apache modules, apache) برید و تیک rewrite_module رو بزنید.
این کارم کردید؟

بله گفتم که , ماژول فعاله . مطمئنم که ماژول rewrite روشنه چون توی phpinfo بودش

MRmoon
یک شنبه 18 خرداد 1393, 22:45 عصر
بله گفتم که , ماژول فعاله . مطمئنم که ماژول rewrite روشنه چون توی phpinfo بودش

اصلا ماژول rewrite ربطی به php نداره که!!!! مال آپاچی هستش.

DR.HTML
یک شنبه 18 خرداد 1393, 23:04 عصر
میدونم نداره اما توی phpinfo ماژول هاییو که اپاچی لود کرده نشون میده :چشمک:

sadegh1362
دوشنبه 19 خرداد 1393, 09:42 صبح
سلام
از این ساختار استفاده کنید .

RewriteEngine on

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

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

حالا می تونید . مقدار هر عبارتی که در url وارد شده از طریق
$_GET['name']_ رو دریافت کنید .
به جای index.php هم هر فایلی بخواید می تونید بذارید

DR.HTML
دوشنبه 19 خرداد 1393, 10:30 صبح
خیر بازم مشکل داره هنوز همون ادرسو میفرسه

MMSHFE
دوشنبه 19 خرداد 1393, 10:47 صبح
ببینید، mod_rewrite برای این نیست که آدرسهای شما رو تغییر بده. فرضاً نمیاد yoursite.com/?category=php رو به yoursite.com/category/php تغییر بده. کارش اینه که اگه yoursite.com/category/php وارد شد توی آدرس، اون رو بصورت yoursite.com/?category=php تفسیر کنه. بنابراین شما باید خودتون آدرسهاتون رو تغییر بدین. در این مورد هم یا باید متد رو post بگذارین و یا اینکه با JS فرم رو بگیرین و submit کنید.

DR.HTML
دوشنبه 19 خرداد 1393, 10:59 صبح
با تشکر از اقای شهرکی :قلب: من همین کاریو که شما گفتین کردم

اگر درست فهمیده باشم یعنی الا ن من اگر با ادرس localhost/name/ali وارد شم به عنوان localhost/test.php?name=ali تفسیر میشه ؟ اگر درسته من با همین ادرس localhost/name/ali وارد شدم اما ارور 404 دریافت میکنم ؟

MMSHFE
دوشنبه 19 خرداد 1393, 11:24 صبح
اینو تست کنید:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /pathOfYourSite
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/(.*)$ index.php?$1=$2 [NC,L,QSA]
اگه سایتتون توی پوشه فرعی توی www یا htdocs هست، اسم پوشه رو بجای pathOfYourSite بگذارین و اگه توی پوشه نیست و مستقیماً تو ریشه گذاشتین، خط اول و سوم رو حذف کنید. اگه بازم کار نکرد توی تنظیمات httpd.conf چک کنید AllowOverride روی All تنظیم شده باشه.

DR.HTML
دوشنبه 19 خرداد 1393, 13:02 عصر
جناب شهرکی این کدیو که دادین به من کار کرد به شکلی که گفتین ادرسیو که دادیم به اون شکل تفسیر کرد

اما میشه بفرمایید کدی که جنابعالی دادین با کد خودم چه فرقی داشت و چرا کد خودم کار نمیکرد

البته کد شما احساس کردم جامع تر بود چون یه سری کار دیگم تونستم باهاش انجام بدم

MMSHFE
دوشنبه 19 خرداد 1393, 13:19 عصر
بدون Rewritebase کد شما داشت به index.php توی روت سرور میفرستاد. ضمناً وقتی مینوشتین mysite/name/ali اینجوری تفسیر میکرد: index.php?name=name/ali