PDA

View Full Version : سوال: یک سوال در مورد htaccess



danial.saeedi
پنج شنبه 02 آبان 1392, 16:58 عصر
ببخشید من چه جوری می تونم بدون اینکه مثلا index.php?id=1 را وارد کنم فقط ایدی را در تارگت وارد کنم و مطلب مورد نظرم بیادش
مثلا اینجوری http://barnamenevis.org/content/1
اگه پست مشابهی هست به من معرفیش کنید ممنون می شم

mfungroup
پنج شنبه 02 آبان 1392, 17:44 عصر
این کد هارو تو اچ تی اکسس بزن:

RewriteEngine On
DirectoryIndex index.php
RewriteRule ^content/(.*)/(.*)$ index.php?$1=$2 [NC]
RewriteRule ^content/(.*)$ index.php?id=$1 [NC]
اگه معنیشو نمیفهمی میتونی تو سایت سرچ کنی آموزش htaccess
با این کد اولا چیزی که خواستی انجام میشه دوما
مثلا اگه بزنی site.com/a/b
به صورت زیر فرستاده میشه
site.com/index.php?a=b

موفق باشی

maryam.20
دوشنبه 06 آبان 1392, 19:56 عصر
سلام.
ممنونم از تاپیکی که گذاشتید و پاسخ مفید دوست عزیزم.

من هم همین مشکل رو دارم اما من میخوام آدرسی که توی آدرس بار زده میشه نام کاربری کاربر باشه درحالیکه من دارم با آیدی شخص رو به پروفایل میفرستم (این وسط احساس میکنم یه کوئری هم باید لازم باشه تا رکورد اون شخص و بخونه و محتوای فیلد نام کاربریو بنویسه) درواقع میخوام شبیه فیسبوک یه آدرس یونیک برای هر کاربر بسازم که بتونه توی کارت ویزیتش ازش استفاده کنه.
مثلا این آدرس: http://site.com/profile.php?id=239 تبدیل بشه به http://site.com/myName

ممنون

mahmod2000
دوشنبه 06 آبان 1392, 20:44 عصر
اول اینکه اگه میخواید با نام کاربر کار کنید باید جای آی دی نام رو در query string تعریف کنید



RewriteEngine On
DirectoryIndex index.php
RewriteRule ^/(.*)$ profile.php?nameUser=$1 [QSA,NC,L]

maryam.20
دوشنبه 06 آبان 1392, 21:42 عصر
ممنونم از توجهتون.
یک فایل درست کردم به نام .htaccess (بدون هیچ اسمی و پسوندی فقط نوشتم .htaccess)بعد هم این کدهارو عینا کپی کردم اما کار نکرد. یعنی برام توی صفحه پروفایل اینشکلی آدرسو نمایش میده:


http://localhost/Site/profile.php?name=یاسمن


درحالیکه من میخوام اینشکلی بشه:


http://localhost/Site/یاسمن

qartalonline
دوشنبه 06 آبان 1392, 23:44 عصر
برای این کار شما کد زیر رو در htaccess استفاده کنید:

RewriteEngine on
RewriteRule ^([^/]*)$ /profile.php?username=$1 [L]

با استفاده از این کد با مراجعه به آدرس http://site.com/yasaman در واقع آدرس http://site.com/profile.php?username=yasaman برای کاربر بارگذاری میشه.

شما باید در صفحه profile.php با استفاده از $_GET['username'] نام کاربری رو بگیرید سپس با استفاده از یک کوئری میتونید اطلاعات کاربر رو بدست بیارید.

در مورد نمایش مسیر پروفایل هم بصورت زیر عمل کنید:

echo 'http://site.com/'.$_GET['username'];

mahmod2000
سه شنبه 07 آبان 1392, 08:09 صبح
اگر باز به مشکل خردی کد رو قرار بدید تا اصلاح کنیم

MMSHFE
سه شنبه 07 آبان 1392, 08:30 صبح
دقت کنید که استفاده از htaccess. ابداً آدرسهای شما رو تغییر نمیده! فقط به وب سرور شما (Apache) میگه که اگه آدرسی با ساختار اولی که جلوی RewriteRule نوشتم، اومد، تو برو و آدرس دومی که نوشتم رو صدا بزن. بنابراین، باید خودتون لینکهاتون رو اصلاح کنید.

maryam.20
سه شنبه 07 آبان 1392, 13:25 عصر
این کدی هست که توی .htaccess دارم:


RewriteEngine On
RewriteRule ^/(.*)$ profile.php?name=$1 [QSA,NC,L]


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


http://site.com/yasaman
یا
http://site.com/یاسمن


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


http://site.com/profile.php?name=یاسمن


من میخوام هم نمایش توی آدرس بار و هم وقت زدن آدرس خاص هر کاربر کدم کارکنه. یعنی وقتی میزنم


http://site.com/yasaman
یا
http://site.com/یاسمن

بره به صفحه یاسمن و توی آدرس بار هم همین آدرس نشون داده بشه.

maryam.20
سه شنبه 07 آبان 1392, 13:31 عصر
برای این کار شما کد زیر رو در htaccess استفاده کنید:
1
2
RewriteEngine on
RewriteRule ^([^/]*)$ /profile.php?username=$1 [L]





این کد رو که وارد کردم کلا سایت برام باز نشد. نمیدونم مشکل از کجاست اما وقتی L2 آخر رو تغییر دادم درست شد. با درست شدنش هم فقط سایت بالا اومد ولی هنوز مشکل آدرس سر جاش بود.




شما باید در صفحه profile.php با استفاده از $_GET['username'] نام کاربری رو بگیرید سپس با استفاده از یک کوئری میتونید اطلاعات کاربر رو بدست بیارید.

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




در مورد نمایش مسیر پروفایل هم بصورت زیر عمل کنید:
1
echo 'http://site.com/'.$_GET['username'];


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

qartalonline
سه شنبه 07 آبان 1392, 14:06 عصر
فایل .htaccess و profile.php رو ضمیمه کنید درست کنم.

maryam.20
سه شنبه 07 آبان 1392, 17:05 عصر
ممنونم.
لیست اسامی در فایل لیست نمایش داده میشه و با کلیک روی هر اسم به پروفایل میره که میخوام این پروفایل یونیک بشه مثل همون یاسمن که کاربر توی کارت ویزیتش بتونه بنویسه

qartalonline
سه شنبه 07 آبان 1392, 17:25 عصر
شما در لوکال استفاده میکنید یا در سرور؟
آدرس اصلی سایت (در لوکال یا سرور) رو چیه.

qartalonline
سه شنبه 07 آبان 1392, 17:44 عصر
من با فرض اینکه آدرس اصلی سایت شما در لوکال بصورت زیر هست کد رو نوشتم.

http://site/

در اینصورت با مراجعه به آدرس زیر اطلاعات کاربر yasaman لود میشه.

http://site/yasaman

maryam.20
سه شنبه 07 آبان 1392, 18:38 عصر
سایتم آریاملک (http://www.aryamelk.com)هست. خوشحال میشم نظرتون رو بدونم درموردش :)

رضا قربانی
سه شنبه 07 آبان 1392, 18:41 عصر
خودتو کشتی عزیزم ، توی همه تاپیک ها گفتی آقا به این تاپیک جواب بدید ، خب یکبار این تاپیک رو مشاهده کن همه چی آماده و منظم در اختیارته و فقط باید یک مقدار زمان بابت یادگیریش بذاری . همین
http://barnamenevis.org/showthread.php?276467-%D8%AA%D8%B1%D9%81%D9%86%D8%AF%D9%87%D8%A7%DB%8C-.htaccess&p=1437176&viewfull=1#post1437176
موفق باشید

maryam.20
سه شنبه 07 آبان 1392, 19:08 عصر
خودتو کشتی عزیزم ، توی همه تاپیک ها گفتی آقا به این تاپیک جواب بدید ، خب یکبار این تاپیک رو مشاهده کن همه چی آماده و منظم در اختیارته و فقط باید یک مقدار زمان بابت یادگیریش بذاریمن اول سرچ کردم بعد اومدم توی تاپیکها پیام گذاشتم. اون مطلب هم خوندم مخصوصا كاربرد نهم - rewrite engine اما کدم کار نکرد.

maryam.20
سه شنبه 07 آبان 1392, 19:14 عصر
آدرس سایتم توی لوکال اینه:


http://localhost/AryaMelk/profile.php?name=یاسمن


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


http://localhost/AryaMelk/یاسمن


درواقع توی سایت اصلی بشه این:


http://www.aryamelk.com/yasaman
یا
http://www.aryamelk.com/یاسمن

qartalonline
سه شنبه 07 آبان 1392, 19:34 عصر
تو لوکال کد htaccess رو بصورت زیر تغییر بدید:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^AryaMelk/(.*)$ AryaMelk/profile.php?name=$1 [QSA,NC,L]
</IfModule>
و در سرور بصورت زیر:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ profile.php?name=$1 [QSA,NC,L]
</IfModule>

در صفحه list.php لینکها رو بصورت زیر در لوکال تغییر بدید:

<a href="/AryaMelk/<?php echo $row['user_title'];?>"><?php echo $row['user_title'];?></a>
و در سرور بصورت زیر:

<a href="/<?php echo $row['user_title'];?>"><?php echo $row['user_title'];?></a>

maryam.20
سه شنبه 07 آبان 1392, 19:41 عصر
مرسی از راهنماییتون.

الان آدرسی که توی آدرس بار هست درست شده اما ارور 404 میده بهم.


حالا اگه همین بخواد تبدیل بشه سابدومین مجازی راحته؟ (باتوجه به مطلبی که آقای قربانی برام لینک کردند)

رضا قربانی
چهارشنبه 08 آبان 1392, 11:13 صبح
دوست گلم برو داخل فولدر AryaMelk فایل اچ تی اکسس رو ایجاد کن و دستورات رو جایگزین کن ببین بازم به مشکل می خوری

maryam.20
چهارشنبه 08 آبان 1392, 13:30 عصر
ممنونم آقای قربانی.
من از اولش هم دقیقا توی روت سایت و در واقع درست در فولدر AryaMelk بدون هیچ دایرکتوری و فولدر داخلی ای htaccess رو ایجاد کردم اما مشکل داره هنوزم.

الان آدرس بار اینو نمایش میده:


http://localhost/AryaMelk/یاسمن

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