درس : apache و mode rewriting ( رقم 1 ) إختصار URLs (روابط)المواقع الديناميكية

الناقل : elmasry | الكاتب الأصلى : shreef | المصدر : www.arabteam2000-forum.com

بسم الله الرحمن الرحيم

هذا الدرس بسيط و خفيف و هام فى نفس الوقت
و هو يعتمد على اعدادات سيرفر اباتشى فسيكون التعامل عبر ملف سنطلق عليه اسم .htaccess

لكن قبل البدء فى النقاش وجب على ان اوضح المقصود مما سنفعله و بعض من الأسباب التى دفعتنا الى هذا

و سنأخذ كمثال للغات برمجة المواقع الديناميكية لغة php

فعندما نتصفح احد هذه المواقع نجد عناوين او بالأصح URLs الصفحات كهذا المثال

http://www.test.com/...?s=526&id=flash

للتوضيح : كلاً من s و id متغيرات داخل الصفحة index.php تم تمريرها عبر الـ URL لتنفيذ قيمها

و هذا ما نريد تغييره لأسباب منها
1 - محركات البحث مثل جوجل تضع تقييم اقل لمثل هذه الـ URLs لأنها تعتبر مضللة و تعيق عملية البحث السليم.
2 - هذه العناوين صعبة و غير عملية بالنسبة للمستخدم العادى .


عموما لنبدء الأن قم بعمل ملف جديد بإسم htaccess.
ضع به هذا الكود

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !-f
RewriteRule /*^s-([0-9]+)/([0-9A-Za-z]+).html  index.php?s=$1&id=$2

فى السطر الرابع :
/*^s-([0-9]+)/([0-9A-Za-z]+).html

دى عبارة عن جملة regular expretion

يمكنك التلاعب بها كما تريد لو لديك الخبرة - ( هذه النقطة مفيدة فى التأمين )-

index.php?s=$1&id=$2 هنا ستكون قيمة المتغير s تساوى 1$
و عند التطبيق سيتم استبدال 1$ بما يطابق ([0-9]+)

و نفس ما حدث يتكرر مع id التى ساويناها مع 2$
و عند التطبيق سيتم استبدال 2$ مع ما ينطبق عليه الشرط ([0-9A-Za-z]+)

بحيث لو كان URL الصفحة هو www.test.com/index.php?s=254&id=flash

سيكون بعدها بهذا الشكل www.test.com/s-254/flash.html

....................................................................................
ملاحظات :

ضع ملف htaccess. فى نفس المجلد الحاوى للملف المنفذة عليه العملية ( فى المثال كان الملف هو index.php )

regular expretions : هى اسلوب او وسيلة لعمل قوالب حرفية --- اى ان اكون بها مقياس لشكل و ترتيب مجموعة من حروف
كما فى هذا المثال البسيط

(+[9-0])-s^ معناها ان اول حرف يجب ان يكون s و ذلك لأن سبقتها العلامة ^ ثم ثانى حرف هو الرمز - ( dash )
ثم يليها اى رقم من 1 الى 9 و علامة + ( plus ) تفيد بأن الرقم من الممكن ان يتكرر مرة او اكثر

*** بالطبع يمكنك البحث اكثر عن regular expretions لتعرفها بالتفصيل ***


الموضوع ليه بقية بس فى وقت اخر إن شاء الله

رجاء المشاركة بسؤال او اقتراح او تعديل او مناقشة و ليس مجرد كلمة شكرا