PDA

View Full Version : سوال: استفاده از Rewrite_Url



farnaz.saeedi
دوشنبه 28 آذر 1390, 23:41 عصر
با سلام
چطوری میتونم با استفاده از Rewrite_Url آدرس هامو از این: profile.php?user=AAAA
به این صورت تغییر بدم:
profile.php/AAAA
اگه دوتا متغییر داشته باشیم چی؟
profile.php?user=AAAA&id=123
اینو چطوری میشه ساده کرد؟
با تشکر

narsic
سه شنبه 29 آذر 1390, 00:08 صبح
این برای دو تا متغیرت

<IFModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([^/\.]+)/([0-9]+)$ profile.php?user=$1&id=$2 [QSA,NC,L]
</IFModule>

اینم برای یکی

<IFModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([^/\.]+)$ profile.php?user=$1 [QSA,NC,L]
</IFModule>

موفق باشید

رضا قربانی
سه شنبه 29 آذر 1390, 01:30 صبح
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

farnaz.saeedi
سه شنبه 29 آذر 1390, 10:04 صبح
این برای دو تا متغیرت

<IFModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([^/\.]+)/([0-9]+)$ profile.php?user=$1&id=$2 [QSA,NC,L]
</IFModule>

اینم برای یکی

<IFModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([^/\.]+)$ profile.php?user=$1 [QSA,NC,L]
</IFModule>

موفق باشید
این کدها رو کجا باید بنویسم؟برای هر آدرس باید این کد و تکرار کنم؟

narsic
سه شنبه 29 آذر 1390, 11:01 صبح
این کد هارو در یک فایل بدون نام و با پسوند htaccess ذخیره کنید و در کنار فایل profile.php قرار بدید و در نهایت سایت رو هم برای استفاده از لینک های جدید آماده کنید (لینک ها رو از حالت قدیمی به حالت جدید تغییر بدید)
منظورتون چه آدرس هایی هست ؟

farnaz.saeedi
سه شنبه 29 آذر 1390, 11:14 صبح
این کد هارو در یک فایل بدون نام و با پسوند htaccess ذخیره کنید و در کنار فایل profile.php قرار بدید و در نهایت سایت رو هم برای استفاده از لینک های جدید آماده کنید (لینک ها رو از حالت قدیمی به حالت جدید تغییر بدید)
منظورتون چه آدرس هایی هست ؟
کارهایی که گفتین و انجام دادم ولی تغییری نکرد


<IFModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([^/\.]+)/([0-9]+)$ profile.php?user=$1&id=$2 [QSA,NC,L]
</IFModule>

اینو تو فایل .htaccess کپی کردم گذاشتم کنار فایل profile.php
اما هنوز آدرسه هام به این شکل:


http://localhost/profile.php?name=حامد&id=1003

این متغییرهای $1 و $2 چی هستن؟

Sadbar7
سه شنبه 29 آذر 1390, 15:45 عصر
به تاپیکی که آقا رضا گذاشتن برید حتما جواب میگیرید.

farnaz.saeedi
شنبه 03 دی 1390, 12:08 عصر
به تاپیکی که آقا رضا گذاشتن برید حتما جواب میگیرید.
دوستان من هنوز مشکلم حل نشده.این تاپیک هایی که گفتین هم مشکلم و حل نکردن
اگه کسی میتونه کمک کنه
ممنون میشم

رضا قربانی
یک شنبه 04 دی 1390, 14:06 عصر
با سلام
چطوری میتونم با استفاده از Rewrite_Url آدرس هامو از این: profile.php?user=AAAA
به این صورت تغییر بدم:
profile.php/AAAA
اگه دوتا متغییر داشته باشیم چی؟
profile.php?user=AAAA&id=123
اینو چطوری میشه ساده کرد؟
با تشکر


این کد برای تک متغیره هست و زمانی که بعد مساوی حروف قرار می گیره :

RewriteRule ^Reza/Ali/([^/]*)$ profile.php?user=$1 [L]
آدرس شما می شه : www.abc.com/Reza/Ali/AAAA (http://www.abc.com/Reza/Ali/AAAA) که می تونی رضا و علی رو هر چیزی بذاری یا اصلا نذاری . نوشتم تا جریان کار بیاد دستت


و اگر بخوای بعد مساوی عدد قرار بگیره باید این کد رو قرار بدید :


RewriteRule ^Reza/Ali/([^/]*)/([^/]*)/?$ profile.php?id=$1 [QSA,NC,L]
آدرس شما می شه : www.ABC.com/Reza/Ali/123 (http://www.ABC.com/Reza/Ali/123)


نحوه آدرس دهی توی پی اچ پی هم باید بلد باشید دیگه توضیح نمی دم .
راستی توضیحات لازم هم توی همون تاپیکی که دادم هست.

واسه دو متغیره :
حالا با این توصیف شما دو متغیر دارید ولی یکی از نوع عددی می شه و یکی از نوع حروف که این کارت رو سخت می کنه و به نظر من باید شما دو تا مد ریرایت بنویسی و بعد توی آدرس دادن که توی پی اچ پی انجامش می دید این دو آدرس رو با هم ترکیب کنید و از & استفاده نمایید (امیدوارم تونسته باشم منظورم رو بهتون برسونم) ولی بازم این کارهایی که بهتون گفتم تست کن اگر نتونستید دوباره بگید .

farnaz.saeedi
یک شنبه 04 دی 1390, 21:05 عصر
این کد برای تک متغیره هست و زمانی که بعد مساوی حروف قرار می گیره :

RewriteRule ^Reza/Ali/([^/]*)$ profile.php?user=$1 [L]
آدرس شما می شه : www.abc.com/Reza/Ali/AAAA (http://www.abc.com/Reza/Ali/AAAA) که می تونی رضا و علی رو هر چیزی بذاری یا اصلا نذاری . نوشتم تا جریان کار بیاد دستت


و اگر بخوای بعد مساوی عدد قرار بگیره باید این کد رو قرار بدید :


RewriteRule ^Reza/Ali/([^/]*)/([^/]*)/?$ profile.php?id=$1 [QSA,NC,L]
آدرس شما می شه : www.ABC.com/Reza/Ali/123 (http://www.ABC.com/Reza/Ali/123)


نحوه آدرس دهی توی پی اچ پی هم باید بلد باشید دیگه توضیح نمی دم .
راستی توضیحات لازم هم توی همون تاپیکی که دادم هست.

واسه دو متغیره :
حالا با این توصیف شما دو متغیر دارید ولی یکی از نوع عددی می شه و یکی از نوع حروف که این کارت رو سخت می کنه و به نظر من باید شما دو تا مد ریرایت بنویسی و بعد توی آدرس دادن که توی پی اچ پی انجامش می دید این دو آدرس رو با هم ترکیب کنید و از & استفاده نمایید (امیدوارم تونسته باشم منظورم رو بهتون برسونم) ولی بازم این کارهایی که بهتون گفتم تست کن اگر نتونستید دوباره بگید .
سلام
ممنون از راهنماییتون
من این کد و تو فایل .htaccess قرار دادم اما هنوز آدرس هام بصورت قبلا نشون داده میشن


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

این یکی از لینک هایی است که یه متغییر داره و اونم از نوع عددی.هنوز به این شکل نشونش میده:


http://localhost/news.php?id=13

چکار باید بکنم؟

رضا قربانی
یک شنبه 04 دی 1390, 23:26 عصر
نه دیگه

یک چیز رو متوجه نشدی ، شما اصلا آدرس دهی رو اشتباه می زنید
وقتی توی اچ تی اکسز می نویسی :

RewriteRule ^Reza/Ali/([^/]*)$ profile.php?user=$1 [L]
توی مد ریرایت دو آدرس می تونه یک صفحه رو بیاره . چه آدرس اصلی - چه آدرس فرعی که خودتون نوشتید
آدرس دهی رو به چه صورتی انجام می دید؟
(زمانی که روی لینک کلیک می کنی آدرس رو به کجا هدایت می کنی؟)

؟

farnaz.saeedi
دوشنبه 05 دی 1390, 12:57 عصر
نه دیگه

یک چیز رو متوجه نشدی ، شما اصلا آدرس دهی رو اشتباه می زنید
وقتی توی اچ تی اکسز می نویسی :

RewriteRule ^Reza/Ali/([^/]*)$ profile.php?user=$1 [L]
توی مد ریرایت دو آدرس می تونه یک صفحه رو بیاره . چه آدرس اصلی - چه آدرس فرعی که خودتون نوشتید
آدرس دهی رو به چه صورتی انجام می دید؟
(زمانی که روی لینک کلیک می کنی آدرس رو به کجا هدایت می کنی؟)

؟
این چیزایی که گفتین و اصلا متوجه نشدم.فک کنم حق با شماست من آدرس دهی و اشتباه انجام میدم.یا اصلا مد ریرایت و بد حالیم شده
من تو صفحه اصلی یکسری تیتر خبر بصورت لینک دارم وقتی رو هرکدوم کلیک میشه آی دی اون خبر با get به صفحه news ارسال میشه.اونجا آی دی رو میگیرم متن خبر رو نشون میدم یعنی وقتی میرم تو صفحه اخبار لینکم به اینصورته:


http://localhost/news.php?id=13
حالا میخوام آدرس هام ساده بشن:


news.php/13

میشه همچین کاری کرد؟

رضا قربانی
سه شنبه 06 دی 1390, 20:11 عصر
خب بذار واست راجع به آدرس دهی توضیح بدم :

ببینید شما وقتی چنین مد ریرایتی ایجاد می کنید

RewriteRule ^Reza/Ali/([^/]*)$ profile.php?user=$1 [L]

زمانی که می خوایی یک خبر رو بخونی و روش کلیک کنی باید به این صورت آدرس بدی :

a href="www.ABC.com/Reza/Ali/'.$row["user"].' " ............intori


آدرس شما می شه : www.abc.com/Reza/Ali/AAAA (http://www.abc.com/Reza/Ali/AAAA) که می تونی رضا و علی رو هر چیزی بذاری یا اصلا نذاری . نوشتم تا جریان کار بیاد دستت !!!

من هر چیزی که لازم بود رو به صورت خیلی واضح توضیح دادم مابقی بستگی به تلاش خودتون داره.
موفق باشید.

farnaz.saeedi
چهارشنبه 07 دی 1390, 10:21 صبح
خب بذار واست راجع به آدرس دهی توضیح بدم :

ببینید شما وقتی چنین مد ریرایتی ایجاد می کنید

RewriteRule ^Reza/Ali/([^/]*)$ profile.php?user=$1 [L]

زمانی که می خوایی یک خبر رو بخونی و روش کلیک کنی باید به این صورت آدرس بدی :

a href="www.ABC.com/Reza/Ali/'.$row["user"].' " ............intori


آدرس شما می شه : www.abc.com/Reza/Ali/AAAA (http://www.abc.com/Reza/Ali/AAAA) که می تونی رضا و علی رو هر چیزی بذاری یا اصلا نذاری . نوشتم تا جریان کار بیاد دستت !!!

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


action="news.php?id=<?php echo $i;?>"

باید حتما از تگ a استفاده کنم؟
این row یعنی چی؟
با تشکر

MMSHFE
چهارشنبه 07 دی 1390, 11:17 صبح
با سلام، به نظرم این بحث خیلی داره طولانی میشه. حقیقتش اینطور احساس کردم که شما برداشت صحیحی از عملیات URL Rewriting ندارین. بنابراین، لازم دونستم این توضیحات رو مطرح کنم:
دوست عزیز، دو نوع آدرس زیر رو درنظر بگیرین:
نوع الف : mysite.com?action=delete&id=5
نوع ب : mysite.com/delete/5
یا این دو نوع آدرس:
نوع الف : mysite.com?user=AAA
نوع ب - mysite.com/AAA
در اکثر مواقع، برداشت اشتباهی بین کاربران وجود داره که فکر میکنن قراره آدرسهایی از نوع الف رو به نوع ب تبدیل کنیم که این برداشت، کاملاً اشتباه هست. درحقیقت هدف از Rewrite، تبدیل آدرسهای نوع ب به الف است. حالا این تفاوت که به ظاهر جزئی بنظر میاد، چه اهمیتی داره؟ اهمیت این مسئله اونجا مشخص میشه که شما لینکهای سایت خودتون رو میخواین بسازین. برای مثال، این کد htaccess. رو ببینید:


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

این کد داره میگه هرچی بعد از آدرس اومد رو بعنوان مقدار پارامتر url درنظر بگیر که ازطریق GET برای صفحه index.php ارسال میشه. درنتیجه، اگه توی آدرس بار بنویسیم:
mysite.com/test/ali
آدرس فوق رو بصورت زیر تبدیل میکنه:
mysite.com/index.php?url=test/ali
یا این کد:


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

باعث میشه آدرسهایی مثل این:
mysite.com/delete/5
تبدیل بشن به این آدرس:
mysite.com/index.php?action=delete&id=5
بنابراین، توی صفحه میتونیم با همون روش عادی (استفاده از GET_$) از پارامترهای موجود در آدرس استفاده کنیم. برای درک بهتر، میتونید دستورات مختلفی رو توی فایل htaccess. بنویسید و فایل index.php رو اینطوری بگذارین:


<!doctype html>
<html>
<head>
<title>Rewrite TEST</title>
<meta charset="utf-8"/>
</head>
<body>
<pre>
<?php
print_r($_GET);
?>
</pre>
</body>
</html>
تا در شرایط مختلف، مقادیر آرایه GET_$ رو براتون نمایش بده و ببینید htaccess. داره چطور کار میکنه. اما اونچه که از توضیحات فوق مسلمه اینه که درصورت استفاده از Rewrite، باید آدرسهای سایتتون رو با روش ب تولید کنید تا htaccess. اونها رو به روش الف تبدیل کنه. درنتیجه همه لینکهای موجود توی سایتتون اگه بصورت:
mysite.com?action=delete&id=5
هستن، اونها رو باید بصورت زیر در بیارین:
mysite.com/delete/5
تا htaccess. اونها رو بصورت قبلی تبدیل کنه. توی صفحه PHP خودتون هم به راحتی با ['GET['action_$ و ['GET['id_$ میتونید مثل حالت آدرس دهی معمولی، کار کنید.
امیدوارم تونسته باشم خوب توضیح بدم. اگه باز هم ابهامی بود، در خدمتم.
موفق باشید.

hamed-php
چهارشنبه 07 دی 1390, 11:41 صبح
با سلام

لطفاً در خصوص مخفی کردن index.php?action=delete&id=5 هم از دید کاربر هم بفرمایید آیا هم چنین چیزی ممکن هست؟
یعنی به جای mysite.com/index.php?action=delete&id=5 کاربر فقط mysite.com رو ببینه!

رضا قربانی
چهارشنبه 07 دی 1390, 12:11 عصر
سلام
یعنی برای ارسال به صفحه خبر نباید از فرم استفاده کنم؟
من اینجوری آدرس دهی کردم:


action="news.php?id=<?php echo $i;?>"
باید حتما از تگ a استفاده کنم؟
این row یعنی چی؟
با تشکر

نه حتما تگ a -------- می تونی توی فرم هم این کار رو انجام بدی !!
این row یعنی چی؟ همون $i شما می شه
a href="www.ABC.com/Reza/Ali/'.$i.' " ............intori

MMSHFE
چهارشنبه 07 دی 1390, 13:06 عصر
با سلام

لطفاً در خصوص مخفی کردن index.php?action=delete&id=5 هم از دید کاربر هم بفرمایید آیا هم چنین چیزی ممکن هست؟
یعنی به جای mysite.com/index.php?action=delete&id=5 کاربر فقط mysite.com رو ببینه!
بعید میدونم بشه از این طریق مقادیر رو به روش GET ارسال کرد. شاید بشه کارهای خاصی در برخی موارد جزئی انجام داد. مثلاً با کوکی و کارهایی ازطریق JS بشه مقادیر رو بین صفحات انتقال بدیم ولی مطمئناً دردسرهای زیادی خواهد داشت. ضمناً خیلی هم سودمند بنظر نمیرسه. شما جای خاصی این مورد رو دیدین؟