PDA

View Full Version : سوال: آدرس دهی با apache و htaccess



xoogle.ir
چهارشنبه 15 اردیبهشت 1389, 19:59 عصر
سلام متاسفانه من الان به adsl دسترسی ندارم نتونستم جستجو کنم سرعت به شدت پایینه !

میخام یه آدرس شبیه به این رو به به آدرس دوم تبدیل کنم گمونم باید با mod_rewrite انجام بشه و یه کدی باید توی .htaccess بنویسم لطفا اگه کسی بلد هست کدش رو برام بذاره!

آدرس فعلی : http://domain.com/folder/show.php?user=ali&page=sample
آدرس جدید : http://domain.com/folder/ali/sample

خیلی ممنون میشم اگر کمکم کنید.

sedamorde
چهارشنبه 15 اردیبهشت 1389, 21:47 عصر
تقریبا اینطوری میشه :



Options +FollowSymlinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^folder/([A-Z_a-z_0-9]+)/([A-Z_a-z_0-9]+) /show.php?user=$1&page=$2 [L]

xoogle.ir
چهارشنبه 15 اردیبهشت 1389, 22:19 عصر
ممنون اما کار نمیکنه :ناراحت:
این کاراکتر L حتما باید باشه ؟؟
این کد ها رو کجای htaccess باید کپی کنم چون توی فایل htaccess ام یک خط کد دیگه هم دارم که اول فایل نوشتمش!

sedamorde
چهارشنبه 15 اردیبهشت 1389, 23:20 عصر
ممنون اما کار نمیکنه :ناراحت:
این کاراکتر L حتما باید باشه ؟؟
این کد ها رو کجای htaccess باید کپی کنم چون توی فایل htaccess ام یک خط کد دیگه هم دارم که اول فایل نوشتمش!

من الان تست کردم و کار کرد! مطمن باش که لینک ها را درست دادی و فقط از کاراکترهای a تا z و 0-9 استفاده کردی.
جاش مهم نیست فقط این کد :


Options +FollowSymlinks
RewriteEngine on

باید یک بار نوشته بشه . [L] هم برداشتی همه نیست.

rapidpich
چهارشنبه 15 اردیبهشت 1389, 23:24 عصر
فکر کنم

/folder/show.php باید باشه خط آخر.

xoogle.ir
پنج شنبه 16 اردیبهشت 1389, 00:11 صبح
فکر میکنم مشکل از من باشه چون دارم روی لوکال با easyphp کار میکنم اینجا حتی یه خط کد ساده از mod_rewrite هم اجرا نمیشه.
باید online تست کنم.
این کدی که دادید در مورد این آدرس هم کار میکنه یا برای این آدرس هم باید یه کد دیگه نوشت ؟

آدرس اول : http://domain.com/folder/show.php?user=ali
آدرس دوم : http://domain.com/folder/ali

اگر باید یه کد دیگه نوشت این رو هم بی زحمت بنویسید.
راستی کاراکتر های _ و - رو هم به کاراکترهای قابل قبول اضافه کنید من هیچی regular بلد نیستم !

sedamorde
پنج شنبه 16 اردیبهشت 1389, 01:44 صبح
فکر میکنم مشکل از من باشه چون دارم روی لوکال با easyphp کار میکنم اینجا حتی یه خط کد ساده از mod_rewrite هم اجرا نمیشه.
باید online تست کنم.
این کدی که دادید در مورد این آدرس هم کار میکنه یا برای این آدرس هم باید یه کد دیگه نوشت ؟

آدرس اول : http://domain.com/folder/show.php?user=ali
آدرس دوم : http://domain.com/folder/ali

اگر باید یه کد دیگه نوشت این رو هم بی زحمت بنویسید.
راستی کاراکتر های _ و - رو هم به کاراکترهای قابل قبول اضافه کنید من هیچی regular بلد نیستم !

با easyphp کار نکردم اما فکر کنم تو آپاچی mod_rewrite را فعال کنی درست بشه.
کد ها باید دوتا بشه :


RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^folder/([A-Z_a-z_0-9_-]+)/([A-Z_a-z_0-9_-]+) /show.php?user=$1&page=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^folder/([A-Z_a-z_0-9_-]+) /show.php?user=$1 [L]

الان - و _ هم قبول میکنه. (فقط تو php بهتر که query هایی را که میگیری فیلتر کنی)
در ضمن دوست عزیر یادت باشه که ترتیب نوشتن RewriteCond نسبت به آدرس های هم نام مثل همین آدرس های شما خیلی مهم. الان اگر کدی را که من دادم جا به جا کنی کار نمیکنه.

rapidpich
پنج شنبه 16 اردیبهشت 1389, 13:23 عصر
کاراکتر - نباید اسکیپ بشه؟

xoogle.ir
پنج شنبه 16 اردیبهشت 1389, 16:23 عصر
دوست عزیز ، یه چیزی مشکل داره این کد کار نمیکنه!
من mod_rewrite رو توی سایتم تست کردم فایل های html رو پاس دادم به php یعنی سرور از این ماژول پشتیبانی میکنه اما این کد رو که میذارم ارور 404 میده و آدرس رو شناسایی نمیکنه مطمئن هم هستم که دیتای خودم رو درست واردش کردم.
کار دیگه ای نباید انجام بدم قبلش ؟
این کد رو توی کدوم فایل htaccess باید آپلود کنم فایلی که داخل root هست یا فایلی که توی نزدیکترین پوشه هست ؟ هرچند من توی جفتش آپلود کردم :ناراحت:

sedamorde
پنج شنبه 16 اردیبهشت 1389, 17:53 عصر
دوست عزیز ، یه چیزی مشکل داره این کد کار نمیکنه!
من mod_rewrite رو توی سایتم تست کردم فایل های html رو پاس دادم به php یعنی سرور از این ماژول پشتیبانی میکنه اما این کد رو که میذارم ارور 404 میده و آدرس رو شناسایی نمیکنه مطمئن هم هستم که دیتای خودم رو درست واردش کردم.
کار دیگه ای نباید انجام بدم قبلش ؟
این کد رو توی کدوم فایل htaccess باید آپلود کنم فایلی که داخل root هست یا فایلی که توی نزدیکترین پوشه هست ؟ هرچند من توی جفتش آپلود کردم :ناراحت:

والا دوست عزیز چی بگم! من خودم تست کردم و کار میکنه. کدها را دو جا نگذار تو همون htaccess روت فقط بگذار.دقت کن آدرس درست داده باشی مثلا اگر فایل show.php در روت میشه:


/show.php?user=$1&page=$2 [L]

و اگر در یک فولدر میشه :


/folder_name/show.php?user=$1&page=$2 [L]


این هم چندتا آموزش ببین شابد کمک کنه :
http://roshanbh.com.np/2008/03/url-rewriting-examples-htaccess.html
http://www.askapache.com/htaccess/ultimate-htaccess-file-sample.html

xoogle.ir
پنج شنبه 16 اردیبهشت 1389, 22:17 عصر
خیلی ممنون دوست عزیز کدت کار کرد :تشویق:
مشکل همون فولدر بود البته من گفته بودم که فایل show.php توی فولدری به نام folder هست.