لاختصار الروابط أو تغيير صيغة وشكل الرابط ببساطة يمكنك تغيير ملف .htaccess الموجود بجزع الموقع الالكتروني
يعنى ايه الكلام ده؟!
ملف .htaccess هو ملف موجود فى كل موقع فى الجذر الرئيسى root وهو مسئول عن ادارة المجلد الحالى ومنح بعض الصلاحيات للوصول لبعض الملفات الموجودة اسفل هذا المجلد ، فيمكن اخفاء اسماء الملفات او اعادة تسميتها او حظر الوصول الى ملف معين بالموقع او بالمجلد.
اولاً قم بفتح ملف .htaccess وتحريره ووضع الكود التالى وجرب بنفسك النتائج:
RewriteEngine on
هذا الكود يقوم بتفعيل اختصار الروابط او بمعنى اخى اعادة تسمية الروابط
أسفل الكود تقوم بكتابة الروابط التى سوف تستخدمها بالطريقة التالية.
RewriteRule ^اسم الملف الجديد$ الرابط القديم
على سبيل المثال هذا الكود يقوم باعادة تسمية صفحة الموقع index.php الى index.html
RewriteEngine on
RewriteRule ^index.html$ index.php NC
معني الكود السابق وتفسير كل جزئية به:
مثال آخر
RewriteEngine on
RewriteRule ^topic-(.).html$ topic.php?action=read&id=$1
فى هذا المثال قمنا بتغيير الرابط الأصلى بالكامل وتمية الموضوع topic-3.html ما يعنى اننا غيرنا المتغير هو الآخر والتوضيح فيما يلى
فى الرابط الجديد كتبنا (.) : وهو ما يعنى أننا قلنا للخادم انتظر سوف نضع شيئا مكان .
فى الرابط القديم وضعنا $ قبل المتغير المراد تعديله ووضعى بالرابط الجديد
هنا سيتم اعادة توجيه الموقع الى taswerat.com/topic-15.html للرابط التالي taswerat.com/topic.php?action=read&id=15
اذا اردت ان تعيد توجيهه الى نفس الرابط مع اضافة متغير جديد كمتغير اللغة فلن تستطيع باستدام FLAG NC او تركه فارغاً مثلاً:
اذا اردت اعادة توجيه الموقع الى taswerat.com/topic.php?action=read&id=15&lang=ru فلن ينجح العلم المذكور بالاعلي ةلحل هذا الاشكال انظر المثال التالي.
مثال أكثر للتوضيع وتغيير العلم FLAG للتنبية على السيرفر باخذ المتغيرات الجديدة وتنفيذها:
RewriteEngine on
RewriteRule ^topic-(.).html$ topic.php?action=read&id=$1 [QSA]
وضعنا العلامة QSA وهي تعني صياغة وتنفيذ المتغيرات بعد الاختصار، أي انه اذا تم التوجيه الى الرابط
taswerat.com/topic-15.html?lang=en فسيتم التوجه للرابط التالي taswerat.com/topic.php?action=read&id=15&lang=en
ملحوظة : يقوم الكود بتغيير كافة المتغيرات على نفس المنوال سواء أى أن:
مثال اخر لاعادة صياغة الرابط واعادة التوجيه عبر برمجة الملفات و .htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [R=301]
شرح الكود السابق :
إعادة توجيه أي طلب فتح رابط لملف داخل مجلد (المجلد غيرموجود ايضاً الملف غير موجود) الي المجلد مع تجاهل الملف المقصود لعدم اظهار رسالة الخطأ 404 not found
اذاً نستنتج من السابق ان RewriteCond او امر يستخدم المنطق و هو يشبه RewriteRule الا ان شكل الكود يختلف بشكل ملحوظ
RewriteCond TestString Condition [Flags]
لمعرفة المزيد حول mod_rewrite يرجي زيارة Apache’s mod_rewrite Introduction و Apache’s official.