اجعل محركات البحث صديقتك عن طريق mod_rewrite

دروس ودروات على كيفية إشهار موقعك , و جعله مميز لمحركات البحث .
ArabFriends
مراقب
مشاركات: 456
اشترك في: الأحد أغسطس 15, 2004 6:31 pm
مكان: أرض الله الواسعة

اجعل محركات البحث صديقتك عن طريق mod_rewrite

مشاركة بواسطة ArabFriends »

بسم الله الرحمن الرحيم
كثير منا يغفل أهمية هذا الموديل الرائع الذي يوفره الأباتشي الذي تعمل عليه 99% من مواقعنا.
الفكرة ببساطة : هي أن تقوم بكتابة عنوان في المتصفح وماسيظهر لك سيكون نتيجة لأوامر أخرى .
كيف ذلك ؟؟!!
ببساطة أيضا عندما ندخل للمنتدى نجد الروابط بهذا الشكل
http://www.domain.tld/forum/viewtopic.php?t=1234
محركات البحث في الغالب تصادق ملفات ال html وليست التي تحمل متغيرات في نهايتها كما سبق الاشارة للرابط بالأعلى ،
توجد عدة طرق سأتطرق إليها بعد ذلك في الشرح حول كيفية تحويل صفحات المنتدى الى روابط html لتتمكن محركات البحث من أرشفتها ، ويمن أهم هذه الطرق وضع هاك أرشيف المنتدى ، فهو يتسخدم هذه الخاصية ( mod_rewrite)

سيتم عمل ذلك من خلال الملف المعروف .htaccess فهو مفتاح الكنز الذي يعطينا إياه الأباتشي
أمثلة سريعة للتعامل مع mod_rewrite :
نريد تحويل هذا الروابط

كود: تحديد الكل

1- http://www.domain.com/index.php?action=index
2- http://www.domain.com/index.php?action=download

إلى

كود: تحديد الكل

1-http://www.domain.com/index.htm
2- http://www.domain.com/download.htm

أو ننشئ ملف باسم .htaccess
نخبر الأباتشي بأننا نريد أن نتيح عملية ال mod_rewrite

كود: تحديد الكل

RewriteEngine on

نخبر الأباتشي بأننا نريد أن نحول كل من يطلب القيمة التي تسبق الامتداد htm الى المتغير في الرابط الأول
فيكون هكذا

كود: تحديد الكل

RewriteRule ^(.*)\.htm$ index.php?action=$1

لاحظ الشق الأول من الكود من بعد rewriterule ستجد التالي
نبدأ جملتنا دوما بهذه العلامة [ ^ ]
وننهي الجملة دوما بهذه العلامة [ $ ]
طبعا بدون الأقواس []
ثم نخبره بأن أي قيمة تدخل لك [ (.*) ] ستكون هي المتغير الخاص بنا
ثم نخبره أن الامتداد الذي سيدخل له هو htm
طبعا نفصل اللاحقة htm بهذه العلامة \ حتى لانتسبب في الخطأ المزعج 500
بعد ذلك الشق الثاني من الكود على هذا الشكل index.php?action=$1
نخبر الأباتشي في هذه المرحلة أن كل هذا الجزء ثابت ماعدا آخر مافيه والذي يظهر لدينا بـ $1
هذه هو المتغير الذي نريده أن يوضع خلف المعطى action
فمثلا لو كتبنا download.htm سيعتبر كلمة downlod هي المتغير الذي يجب تمريره لكي يوضع بعد action

دعنا الآن نجمع الكود الخاص بنا في الملف ونضعه للتجربة
أنشئ الملف .htaccess وضع به الآتي

كود: تحديد الكل

#swithch on mod_rewrit
RewriteEngine on
#Rule of rewritng
RewriteRule ^(.*)\.htm$ index.php?action=$1


الآن ضع هذا الملف في أحد المجلدات في موقعك أو على السيرفر الشخصي ( تذكر مجلد فرعي حتى لايحدث لك خطأ في الموقع كله اذا لا قدر الله ووجدت أخطاء )
الآن أنشئ ملف باسم index.php وضعه به الكود التالي :

كود: تحديد الكل

<?php
switch ($action) {
  case "index":
  echo "هذه هي الصفحة الرئيسية";
  break;

  case "download":
  echo "هذه هي صفحة تحميل الملفات";
  break;
}
?>

أتمنى أن تكونوا قد استفدتم منها
للمعلومية : يوجد العديد من السكربتات تستخدم هذه الطريقة في الوقت الحالي ، وأكثرها استخداما هي سكربتات cms

أستخدمها أيضا في سكربت التوقيع للبريد : http://www.wmasterz.com/sig
وسكربت البيج ران الخاص بجوجل : http://www.wmasterz.com/pr
ويمكنك ملاحظة ذلك من تغيير أسماء الصور فقط :wink:

كما ذكرت ، فسأتطرق لتفعيل هذه الخاصية في phpBB لوضع روابط المنتدى على أنها html لكن في جلسة أخرى ان شاء الله :D
عبقر
عضو مفيد جداً
مشاركات: 417
اشترك في: السبت سبتمبر 25, 2004 3:28 am
مكان: MyPC

مشاركة بواسطة عبقر »

مشكور اخوي على التوضيح الرائع

وفعلاً المود mod_rewrite مفيد مع محركات البحث,,لكن مشكلتة انه يرفع اللود على السيرفر لان كل زياة تقوم بتشغيل RewriteEngine

كود: تحديد الكل

The crazy and lazy can even do the following in the top-level .htaccess file of their homedir. But notice that this creates some processing overhead.


ومكتوب في موقع اباتشي انه كلما كان الشخص محترف في كتابة اوامر الmod_rewrite كلما كان اللود اقل,,يعني زي البرمجة ممكن يكون فيه برنامجين لنفس الغرض لكن واحد اخف من الثاني لان اكواده اخف واسرع

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

اذكر شركة SEO عملت مسابقة بجائزة 1000 دولار لاخف mod_rewrite يؤدي الغرض لموقع كامل,,,,عشرين ملف كلهم نفس الغرض لكن واحد منهم كان تأثيره على اللود بسيط جداً

وهذا مرجع مهم له

http://httpd.apache.org/docs-2.0/misc/rewriteguide.html

انا بصراحة احس فيه فن اسمة الmod_rewrite لازم الواحد يتعلمه :)
ArabFriends
مراقب
مشاركات: 456
اشترك في: الأحد أغسطس 15, 2004 6:31 pm
مكان: أرض الله الواسعة

مشاركة بواسطة ArabFriends »

أشكرك أخي عبقر على الاضافة الرائعة

بالفعل mod_rewrite يزيد من اللود على السيرفر
أعتقد أن الحلول كثيرة لمشكلة اللود ولكن بعد أن نرى استخداماته في المواقع العربية سنجد ابحاثا عن هذا الموديل وكيفية تخفيف الضغط :mrgreen:
AC
مشرف عام
مشاركات: 1806
اشترك في: الجمعة أغسطس 13, 2004 10:46 am
مكان: KSA

مشاركة بواسطة AC »

السلام عليكم ورحمة الله

اسلوب بديع في الشرح اخي محمد..واشكرك على اثارة هذا الموضوع...

والmod_rewrite لايمكن لاحد ان يبخسة حقة فهو الذي الف بين المواقع الديناماكية ومحركات البحث..

لكن مسئلة اللود هذه واقع لابد منه..

انا بصراحة احس فيه فن اسمة الmod_rewrite لازم الواحد يتعلمه


هو الافضل ان الشخص ياخذ دورة كاملة في الاباتشي لان الmod_rewrite جزء صغير منه...وبصراحة اذا الواحد اتقن الاباتشي ممكن نقول عليه web guru
مثل الويندوز اغلبنا يستخدمه بشكل جيد ويحل مشاكلة لكن لايتجراء للدخول الى الاعدادات والريجستري واجراء بعض اللمسات لتسريع العمل وتقليل استهلاك الموارد..

اما في الmod_rewrite فاعتقد اي شخص يمكنه كتابة الrules بشكل جيد جداً...بشرط التأني ومراجعة كل الملف بعد الانتهاء والتأكد من عدم وجود اوامر متشابهه او تؤدي نفس الغرض وبعد رفعة للمواقع يجب ان يقوم باختباره ثم البدء بحذف بعض الامور ويرى هل لها اثر اما لا ...اي مراجعة الملف كل مره ستعطي نتائج افضل..

واذا كان الشخص يملك سيرفر مستقل خاص به يمكنه وضع هذه الRules في اعدادت الاباتشي مباشرة فتكون قياسية لاتحتاج لتشغيل RewriteEngine مع كل زياره..

اكرر شكري لك اخي محمد على اثارة هذا الموضوع...

تحياتي :)
INet
عضو نشيط
مشاركات: 236
اشترك في: السبت سبتمبر 25, 2004 5:11 am

مشاركة بواسطة INet »

موضوع شيق مفيد وثمين بالمعلومات اشكرك اخي محمد على طرحة وعلى الشرح

واشكر الاخوان على اثرانا بنقاشهم :) فعلاً الmod_rewrite خلانا نطور مواقعنا بدون الخوف من محركات البحث :)
WEBPro
عضو نشيط
مشاركات: 190
اشترك في: الثلاثاء ديسمبر 14, 2004 2:45 pm
مكان: WwW

مشاركة بواسطة WEBPro »

موضوع قيم في المفضلة فوراً :)

شكراً اخي ArabFriends وبقية الاخوان المتناقشين :)
dr_virus
عضو نشيط
مشاركات: 140
اشترك في: الأربعاء مارس 02, 2005 5:49 pm
مكان: الأردن

مشاركة بواسطة dr_virus »

رائع جدا
لكن لدي سؤال و أرجو أن تعذروني عليه لأني جاهل في mod_rewrite
أنا لدي صفحة php عادية ليس خلفها أي متغيرات فقط php لجلب البيانت من القاعدة http://www.tasaley.com/index.php
أريد إستخدام هذه التقنية لجعلها htm
كيف ذلك؟؟؟؟؟؟
:o
dr_virus
عضو نشيط
مشاركات: 140
اشترك في: الأربعاء مارس 02, 2005 5:49 pm
مكان: الأردن

مشاركة بواسطة dr_virus »

لقد قمت بعمل تغيير بسيط على الكود كالتالي

كود: تحديد الكل

RewriteEngine on
RewriteRule ^(.*)\.htm$ index.php


ووضعت صفحة فيها متغير
http://www.tasaley.com/mod_rewrite

يمكن تشغيل
http://www.tasaley.com/mod_rewrite/index.htm

و يمكن تشغيل index.php على نفس العنوان

لكن السؤال هو عند أرشفة الصفحة الرئيسية من قبل محرك البحث هل سيقوم بأرشفتها على أساس أنها php أو Html

يعني محرك البحث سيأخذ index.phpأو index.htm الوهمي؟؟؟؟؟
:)
ArabFriends
مراقب
مشاركات: 456
اشترك في: الأحد أغسطس 15, 2004 6:31 pm
مكان: أرض الله الواسعة

مشاركة بواسطة ArabFriends »

أشكرك أخي خالد ، INet ، WEBPro على التعقيب

لكن السؤال هو عند أرشفة الصفحة الرئيسية من قبل محرك البحث هل سيقوم بأرشفتها على أساس أنها php أو Html

محرك البحث سيأخذ الذي تضعه في موقعك
أي أنه اذا وضعت ارتباط للصفحة index.php سيقوم محرك البحث بزيارتها
أما اذا وضعتها ك index.htm فسيقوم أيضا بزيارتها وأرشفتها بشكل أسرع ، لأن محركات البحث تحب ال html :)
فأعتقد أنه من الأفضل أن تضع الرابط في الصفحة لموقعك على اساس htm

بالنسبة للصفحة الرئيسية للموقع ، فمحرك البحث اذا وجد رابط لموقعك على هذا الشكل

سيقوم بزيارة الصفحة ذات الامتداد php
أما اذا وضعته هكذا

فسيأخذ اول صفحة تخرج له ، سواء html أو php لكن احرص على أن تكون الروابط التي تعود لهذه الصفحة أن تكون بامتداد htm

ثانيا وبعد زيارة موقعك ، عدل صفحة ال inde.php وغير كل الوصلات الموجودة فيها الى htm
ثم عدل الكود اللي كتبته فوق الى الآتي

كود: تحديد الكل

RewriteEngine on 
RewriteRule ^(.*)\.htm$ $1.php

فهو كفيل بتحويل أي صفحة تطلب على هيئة htm الى مقابلها من php
مثلا
http://www.tasaley.com/login.htm
سيتم استدعاء
http://www.tasaley.com/login.php

أرجو ان تكون قد أفادتك هذه العملية
the.helper
عضو نشيط
مشاركات: 186
اشترك في: الثلاثاء إبريل 12, 2005 4:04 am

مشاركة بواسطة the.helper »

لقد قرأت موضوع مشابه له فى سوالف

وجيد جدا أنك وضعت هذا الموضوع فمنكم نستفيد :) :)

شكرا لك :wink: