اختصار الروابط ابستخدام htaccess
تصويرات
تقنية / مواقع الانترنت

اختصار الروابط ابستخدام htaccess

لاختصار الروابط أو تغيير صيغة وشكل الرابط ببساطة يمكنك تغيير ملف .htaccess الموجود بجزع الموقع الالكتروني

يعنى ايه الكلام ده؟!

ملف .htaccess هو ملف موجود فى كل موقع فى الجذر الرئيسى root وهو مسئول عن ادارة المجلد الحالى ومنح بعض الصلاحيات للوصول لبعض الملفات الموجودة اسفل هذا المجلد ، فيمكن اخفاء اسماء الملفات او اعادة تسميتها او حظر الوصول الى ملف معين بالموقع او بالمجلد.

اولاً قم بفتح ملف .htaccess وتحريره ووضع الكود التالى وجرب بنفسك النتائج:


RewriteEngine on

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

أسفل الكود تقوم بكتابة الروابط التى سوف تستخدمها بالطريقة التالية.

RewriteRule ^اسم الملف الجديد$ الرابط القديم

على سبيل المثال هذا الكود يقوم باعادة تسمية صفحة الموقع index.php الى index.html


RewriteEngine on
RewriteRule ^index.html$ index.php NC


معني الكود السابق وتفسير كل جزئية به:



  1. ^ يدل الرمز على بدائة الرابط المختصر
  2. $ يدل على نهائة الرابط المختصر
  3. index.html تدل على الرابط المختصر نفسه
  4. index.php هو الرابط الاساسي الذي تم اختصارة
  5. [NC] علامة تعني عدم حساسية الاحرف سواء IndEx.htmL او index.html فجميعهم سواية FLAG


مثال آخر


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




ملحوظة : يقوم الكود بتغيير كافة المتغيرات على نفس المنوال سواء أى أن:


  • topic.php?action=read&id=1 تحول الى topic-1.html
  • topic.php?action=read&id=2 تحول الى topic-2.html
  • topic.php?action=read&id=text تحول الى topic-text.html

مثال اخر لاعادة صياغة الرابط واعادة التوجيه عبر برمجة الملفات و .htaccess


RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . / [R=301]

شرح الكود السابق :

إعادة توجيه أي طلب فتح رابط لملف داخل مجلد (المجلد غيرموجود ايضاً الملف غير موجود) الي المجلد مع تجاهل الملف المقصود لعدم اظهار رسالة الخطأ 404 not found


  1. RewriteCond شرط إعادة الصياغة او شرط الإختصار
  2. %{REQUEST_FILENAME} وتعني أي طلب لاي ملف .
  3. -f تعني طلب للملف.
  4. -d تعني طلب لمجلد.
  5. علامة التعجب ! قبل !-f و !-d تعني ملف غير موجود والأخرى تعني مجلد غير موجود
  6. RewiteRule اعادة توجيه السطر التالي
  7. النقطة . وتعني أي طلب للموقع أو زيارة لاي ملف او رابط للموقع
  8.  الشرطة المائلة / وتعني مجلد الجزر أي سيتم توجيه اي رابط بالموقع الى الرابط الرئيسي للموقع مثال taswerat.com/articles.html الى  taswerat.com/
  9. [R=301] وهذا هو العلامة او FLAG وتعني انه تمت اعادة التوجيه بصورة دائمة وليست مؤقته. 


اذاً نستنتج من السابق ان RewriteCond او امر يستخدم المنطق و هو يشبه RewriteRule الا ان شكل الكود يختلف بشكل ملحوظ 

RewriteCond TestString Condition [Flags]



لمعرفة المزيد حول mod_rewrite يرجي زيارة Apache’s mod_rewrite Introduction و Apache’s official.

Mahmoud Salama 0 1000 2022/06/13-13:37:57

Available Media:

Images: