pedia-learning

ورود

گذرواژه‌تان را فراموش کرده‌اید؟

ثبت نام

ثبت نام
انجمن عمومی گسترش فناوری آگو

اگر اولین بار از انجمن بازدید می کنید برای دسترسی کامل به انجمن عضو شوید بعد عضویت قادر به ارسال مطلب و شرکت در بحث خواهید داشت

ارسال پاسخ 
 
امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ساخت URL های دلخواه با htaccess
01-27-2014, 07:45 PM
ارسال: #1
ساخت URL های دلخواه با htaccess
سلام
بنا به درخواست یکی از دوستان تصمبم گرفتم آموزش ساخت URL های دلخواه یا آدرسهای کاربر پسند با استفاده از htaccess رو بذارم.
مزایای اینجور آدرس دهی ها اول اینه که در موتورهای جستجو بهتر شناخته میشه.مزیت دوم هم که برای کاربراست.مثلا سایت twitter رو در نظر بگیرید »

[تصویر:  twitter.png]

همینطور که میبینید این آدرس پروفایل به راحتی در ذهن کاربرا و هم در ذهن موتورهای جستجو باقی میمونه.
اما آدرسهای دیگه ای مثل آدرس زیر :

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


یک آدرس کاربر پسند نیست و به راحتی نمیشه به خاطر سپردش.
برای ساخت آدرسهای کاربر پسند دو راه وجود داره.

استفاده فقط از htaccess
استفاده از htaceess و php

در هر دو راه باید از فایل htaccess استفاه بشه. پس در ابتدا به آموزش htaccess میپردازیم.
استفاده از htaccess

فایل htaccess در حقیقت فایل تنظیمات وب سرور آپاچیه.
برای ساخت آدرسهای زیبا توسط این فایل ابتدا یک فایل با نام .htaccess بسازید. سپس محتویات زیر رو داخلش بنویسید یا کپی کنید :

کد php:
Options +FollowSymLinks
RewriteEngine On

RewriteCond 
%{SCRIPT_FILENAME} !-d
RewriteCond 
%{SCRIPT_FILENAME} !-f

RewriteRule 
^users/(\d+)*$ ./profile.php?id=$1
RewriteRule 
^threads/(\d+)*$ ./thread.php?id=$1

RewriteRule 
^search/(.*)$ ./search.php?query=$

حالا به معرفی و توضیح کدهای بالا میپردازیم.
خط اول ممکنه در بعضی هاست ها نیاز باشه برای همین قرارش میدیم
درخط دوم مشخص کردیم که میخوایم از RewriteEngine استفاده کنیم و این ماژول آپاچی رو فعال کردیم.
در خط سوم هیچی ننوشتیم Big Grin
در خط چهارم و پنجم شرطی قرار دادیم که اگر آدرس درخواستی فایل و پوشه نبود بقیه دستورات میتونن اجرا بشن.این دو شرط برای زمانیه که کاربر مثلا فایل example.com/images/logo.png فراخوانی کنه میخوایم که مستقیم فایل رو بهش نمایش بده.

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

RewriteRule ^users/(\d+)*$ ./profile.php?id=$1

در این دستور هر وقت url به صورت مثلا دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
بود فایل profile.php?id=123 رو درخواست میکنه و به کاربر نمایش میده.
خطوط بعدی هم همینطور.



اگر آدرس مساوی با قسمت rule باشه ،درخواست به قسمت url به ارسال میشه.
RewriteRule rule url

با استفاده از این روش هر ادرسی رو که دلمون بخواد میتونیم بسازیم. اما مشکلی که این روش داره اینه که اگر تعداد صفحات سایتمون زیاد باشه باید برای همه صفحات یک دستور بنویسیم.
راه حل رفع این مشکل استفاده از روش دوم.
استفاده از htaccess به همراه php

در این روش ابتدا همه درخواست ها رو به فایل index.php ( یا هر فایلی که خواستید) میفرستید. سپس با دستورات php آدرس رو تجزیه میکنید و ازش استفاده میکنید.

برای اینکار در فایل htaccess خطوط زیر رو بنویسید ( محتویات قبلی رو پاک کنید) :

کد php:
Options +FollowSymLinks  
    RewriteEngine On  

    RewriteCond 
%{SCRIPT_FILENAME} !-d  
    RewriteCond 
%{SCRIPT_FILENAME} !-f  

RewriteRule 
^(.*)$ index.php?param=$

تنها تفاوت این فایل با قسمت قبل دستور خط آخره.
به جای نوشتن دستورات مختلف برای صفحات مختلف سایت در فایل htaccess ، در این قسمت تمام URL ها رو به فایل index.php ارسال میکنیم.که این کار به ما کمک میکنه بقیه کارها رو با دستورات پی اچ پی انجام بدیم.
همینطور که در بالا میبینید همه درخواستهارو در متغیر $_GET['param'] ریختیم.
حالا در فایل index.php میتونیم به راحتی از متغیر $_GET استفاده کنیم.

کد php:
if(isset($_GET['param']) AND !empty($_GET['param']))
{
    
$page $_GET['param'];
    if(
file_exists('pages/'.$page.'.php'))
    {
        include(
$page.'.php');
    }else
    {
        include(
'404.php'); 
    }
}else
{
    include 
'main.php';


در ابتدا چک کردیم برای خالی نبودن و ست شدن متغیر $_GET['[param'] اگر شرط برقرار نبود فایل main.php یا همون صفحه اصلی سایت نمایش داده میشه. در غیر اینصورت چک کردیم که آیا فایل مورد نظر وجود داره یا خیر. اگر وجود داشت include میشه وگرنه به کاربر صفحه ۴۰۴ نمایش داده میشه.
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان


Persian Translation by MyBBIran.com - Ver: 4.1
Powered by MyBB, © 2002-2024 MyBB Group.
Theme designed by Marvel (Sidebar created by Yaldaram - Yaldaram.com)
Theme Translation by Mt Edition