| |||||||
| المدوّنات | البحث | مشاركات اليوم | اجعل كافة المشاركات مقروءة |
|
| | LinkBack | أدوات الموضوع |
| |||||
| خاصية mod_rewrite - شرح مفصل مقدمة تسمح لك تقنية mod_rewrite والموجودة في برنامج Apache الشهير بتحويل زوار الموقع من رابط الى رابط آخر دون علمهم ودون تغيير الرابط في المتصفح، هذا يمكنك من تحويل الزائر من رابط الصفحة القديم الى الرابط الجديد مثلاً، كما تسمح لك بإعادة كتابة الروابط بالشكل الذي تريده ويسهل على الزائر وعلى محرك البحث أيضاً فهمها. مثلاً، يمكنك استبدال رابط مثل: كود: http://www.site.com/showCategory.php?catId=34 كود: http://www.site.com/category/34/ بالاضافة الى المزايا السابقة لاستخدام تقنية mod_rewrite، فعدم استخدامها ينطوي على عدة عيوب منها: 1- سهولة معرفة لغة البرمجة المستخدمة في الموقع، وبالتالي إعطاء الفرصة للمخترقين والمخربين بمحاولة اختراق الموقع عن طريق حقن الاستعلامات في الرابط أو اي طريقة أخرى، بالاضافة الى ان التقنية المستخدمة وكيفية سير البرنامج ينبغي أن تظل سرية ومجوبة عن الزوار. 2- احتواء الرابط على المتغيرات والعلامة "&" والتي تعتبر غير مطابقة للمواصفات القياسية XHTML والتي ينبغي ان يتم معالجتها قبل ادراج الرابط في صفحات مواقع أخرى. 3- بعض محركات البحث لا تقبل على أرشفة الصفحات التي تحتوي روابطها على علامة ؟ وبالتالي يقل ترتيب الموقع في محركات البحث. هنا تظهر أهمية استخدام التقنية mod_rewrite والتي بفضلها يمكننا تحويل هذا الرابط الغير محبوب سيء المنظر الى رابط بهذا الشكل: كود: http://www.site.com/category/34/ كيفية استخدام mod_rewrite لكي تستخدم هذه التقنية يجب أولاً أن نشغل هذه الخاصية على السيرفر، ويتم ذلك عن طريق وضع الكود التالي في ملف htacces. في المجلد الرئيسي للموقع، حتى تعمل الخاصية في هذا المجلد والمجلدات المتفرعة منه، والكود هو كالتالي: كود: RewriteEngine on كود: RewriteRule URL1 URL2 URL1 هو الرابط المراد مطابقته و URL2 هو الرابط المراد توجيه الزائر له عند دخوله للرابط الأول مثال: قمت بتغيير اسم ملف قديم الى اسم جديد، كيف ستتصرف حيال الروابط الموجودة في المواقع الأخرى والتي تحتوي الإسم القديم للملف؟؟ وهل يعقل ان تخسر أرشفة محركات البحث لهذه الروابط القديمة؟ الحل: يمكنك حل هذه المشكلة باستخدام mod_rewrite وتوجيه الزوار من الرابط القديم المعروف لديهم الى الرابط الجديد، كالتالي: كود: RewriteEngine on RewriteRule ^old\.html$ new.html في السطر الأول قمنا بتشغيل الخاصية. في السطر الثاني قمنا بتحويل الزائر من الملف old.html الى الملف new.html لاحظ ما يلي: العلامة ^ تستخدم دائماً للدلالة على بداية الرابط الأول العلامة $ تستخدم دائماً للدلالة على نهاية الرابط الأول العلامة . (النقطة) لها معنى خاص في التعابير المنتظمة، ويجب أن نخبر السيرفر بأن يعاملها كنقطة عادية لذلك سبقناها بالعلامة \ طيب بعد اضافة الكود و عند دخول الزائر للصفحة old.html سيتم توجيهه تلقائياً ودون علمه للصفحة new.html، ويبقى عنوان الصفحة في المتصفح مثل ما كان عليه old.html ولكن ماذا لو أردنا ان يعرف الزائر أنه قد تم توجيهه لصفحة أخرى؟ ويتغير رابط الصفحة في المتصفح؟ علينا باستخدام هذا الكود بدلا من الأول: كود: RewriteEngine on RewriteRule ^old\.html$ new.html [R] حتى الآن فالموضوع بسيط ومفهوم على ما أعتقد.. ولكن في اغلب الأحوال نحتاج الى بناء كود معقد، ففي الغالب لا نعرف اسم الملف الموجه ولا الموجه اليه، واذا عرفناهم فهم كثير ونريد ان نضع قاعدة عامة يتم التوجيه بناءاً عليها، أيضاً نود تمرير المتغيرات بطريقة GET .. هنا تأتي الحاجة لاستخدام التاعبير المنتظمة REGULAR EXPRESSIONS mod_rewrite والتعابير المنتظمة (Regular Expressions) نصل الآن الى الجزء المهم، وهو المفيد فعلا والمستخدم بكثرة في هذه الخاصية، فهو مفيد وشيق بقدر ماهو معقد، لذا يلزم التركيز جيداً والانتباه في هذه الجزئية. فيمكنك باستخدام التعابير المنتظمة اخبار السيرفر بان يقوم بتحويل أي رابط يطابق الصيغة التي تكتبها الى رابط آخر، واليك هذا الكود: كود: RewriteRule ^products/([0-9][0-9])/$ /productInfo.php?prodId=$1 http://www.site.com/products/29/ أو الرابط http://www.site.com/products/62/ ويوجهه الى الصفحة http://www.site.com/productInfo?prodId=29 أو http://www.site.com/productInfo?prodId=62 على التوالي. واليك تفصيل الكود السابق: بالنسبة للشطر الأول: كود: ^products/([0-9][0-9])/$ $ تدل على نهاية الرابط [0-9] تعني اي رقم من 0 وحتى 9، وتكرارها مرتين تعني انه رقم مكون من عددين () والأقواس تعني وضع مابينها في متغير يتم استخدامه فيما بعد في نفس السطر أما الشطر الثاني كود: /productInfo.php?prodId=$1 والعلامة $1 تعني استخدام المتغير الموجود بين الأقواس () في الشطر الأول في هذا المكان.. إذاً فهكذا تعمل الأشياء... طيب الكود في المثال السابق يوجه الزائر عند كتابة رابط مثل هذا: http://www.site.com/products/62/ طيب ماذا يحدث لو نسي الزائر كتابة علامة "/" في النهاية؟ الاجابة لن يتم التوجيه وسيحصل الزائر على صفحة خطأ 404 يمكننا معالجة ذلك عن طريق اجبار السيرفر باضافة العلامة "/" حتى ولو لم يضفها الزائر في نهاية الرابط، كالتالي: كود: RewriteRule ^products/([0-9][0-9])$ /products/$1/ [R] RewriteRule ^products/([0-9][0-9])/$ /productInfo.php?prodId=$1 ![]() ولكن ماذا لو زاد عدد المنتجات عندنا عن 99؟ ماذا لو اصبحوا 100 او 200 منتج؟ هل سنضطر لتكرار الكود [0-9] بعدد المنتجات المتوقعة؟ الاجابة طبعا لا فيمكنك استخدام الكود التالي للدلالة على أي عدد من الأرقام بعد products/ كود: RewriteRule ^products/([0-9]+)/$ /productInfo.php?prodId=$1 إلى هنا تكون قد وصلت الى قدر جيد جداً في تعلم هذه الخاصية... طبعا ًمازال هناك الكثير والكثير يمكن عمله بالخاصية .. ولكن نكتفي بهذا القدر كبداية واذا اعجبكم الموضوع يمكننا عمل درس ثاني متقدم نستكمل فيه هذه الخاصية المفيدة جداً جداً منقول من منتدى PHP | |||||
|
| |||||
|
شرح اروع من الرائع و إلي المفضلة و المستندات و مجلد "PRivate" وفي الرئيسية لدرايف E 4 اماكن حفظت فيه الدرس عشان مايضيع شكرا لك عزيزي القدير mahmoud009
__________________ Algareem.Com Creative Designs LayeredPoint.Com Warez Hosting === UAE - FTP WareZServer العنوان : ftp://guests.arabcream.com:8822 | |||||
|
| |||||
| اقتباس:
اقتباس:
اقتباس:
اقتباس:
اقتباس:
وبخصوص المشكلة التي أشار اليها أخي "ابوليالي" طبعا جميع الصور والروابط في الصفحة ستحتاج الى معالجة عن طريق mod_rewrite أيضاً كالتالي: كود: RewriteRule ^products/[0-9][0-9]/(.*)$ /$1 [L] RewriteRule ^products/[0-9][0-9]/images/(.*)$ /images/$1 [L] | |||||
|
| |||||
|
ما شاء الله .. درس ممتاز ..
__________________ ██████████ ██████████ ██████████ مهارات سوفت مهارات سوفت للبرامج وتطوير المواقع والمنتديات والتبادل التجاري. للتواصل .. 00967733873335 باب الحارة .. للبيع ..!! | |||||
|
| |||||
|
شكرا اخي mahmoud009 على الدرس ولكن هناك سؤال يحيرني بافتراض انني قمت بتفعيل خاصية الـ mod_rewrite وقمت بتحويل جميع روابط منتداي او موقعي الى روابط مباشرة وتم تعديل جميع الروابط في محركات البحث الى الروابط الجديدة ونفترض بعدها انه حدثت مشكلة في هذه الخاصية وتوقفت او مثلا سببت ارتفاع في لود السرفر وتم الاضطرار الى وقفها معنى ذلك ان كل الصفحات القديمة الموجودة في محركات البحث سوف تؤدي الى صفحات خطأ 404 وسوف افقدها كلها ؟؟
| |||||
|
| |||||
|
تم حفظ الدرس ...شرح ممتز ويتمنى الجميع دون شك الاكمال حتى النهاية ! في انتظار الدرس الثاني
__________________ اعلانات لوّن - أسعار رمزية جدا موقع لوّن- دروس فوتوشوب-خطوط-ايقونات-قوالب-شعارات-فرش و ستايلات فوتوشوب | |||||
|
| ||||||
| اقتباس:
اقتباس:
اقتباس:
اقتباس:
اقتباس:
اقتباس:
| ||||||
|
| |||||
|
السلام عليكم اخ محمود اولا بارك الله فيك وجزاك كل خير على الدرس الجميل . ثانيا اخي العزيز بالنسبة لهذا الامر جنني ولااشتغل او ظبط : RewriteRule URL1 URL2 حطيب امر تشغيل الخدمة في htacces. لكن دون فائدة .. جربت كل شئ ولانفع !! هل معقول ان المشكلة من السيرفر ؟ شكرا لك. تحياتي .
__________________ والله لن ننساك ياأبا عدي !!! | |||||
|
| |||||
|
طيب اخوي ابي اسألك عن شغله المود رايتر يعني لو انا استخدم سكريبت مجلة نيوك واضفت الاوامر هذي على سبيل المثال في الملف htacces. راح يحول صفحات السيكربت الى html بدون ما اغير شي بقاعدة البيانات او ملفات السكريبت !! توني مبتدىء في الأمور هذي لكن مجرد استفسار ؟
__________________ ديوانية مراجيج © www.rjaah.com دليل مواقع www.rjaah.com/link الديوانية www.rjaah.com/vb | |||||
|
| |||||
|
السلام عليكم شكرا على هذا الشرح الوافي و الذي من شأنه تسهيل وصول محركات البحث لدي موقعين يعتمدان على الفور ايمجز استخدمت فيها هاكين مختلفين الاول يعطيك رقم القسم او الصورة في العنوان http://www.kashtah.com/4images/img1982.htm الثاني يعطيك اسم القسم او الصورة http://www.sources.ws/file/r-ca%D3%D...3%E4%D3s-3.htm ولكن المشكلة انه لا يقبل الاحرف العربية السؤال الكبير هو : كيف نستطيع اضافة الكلمات عربية الى العنوان كما هو معمول به في ويكيبيديا؟ شكرا | |||||
|
| |||||
| اقتباس:
انت لازم تستبدل URL1 بالرابط القديم (المحول منه) وتستبدل URL2 بالرابط الجديد (المحول اليه) اقتباس:
اقتباس:
يعني انت لازم تعدل في ملفات السكريبت بحيث الروابط الجديدة تنطبع بدلا من القديمة اقتباس:
يمكن هاكات معينة هي اللي ترفع اللود لكن الخاصية نفسها لا ترفع اللود اقتباس:
وقتها تظهر الروابط باللغة العربية عادي لكن لينوكس مابيفهمش العربية عشان كده بتظهر مشفرة اعتقاد بس والله اعلم | |||||
|
| |||||
|
ستا> محمود عافاك الله على هذه المعلومات والظاهر اني استعجلت التطبيق الان اصبح كثير من الصفحات على موقعي لا تعمل وهي تقريبا التي تنتهي ب Html اساسا لاني حبيت احول روابط المنتدى من php الى Html ولكن الان لم تعد تعمل الصفحات جميعها خارج مجلد المنتدى مثال عليها http://www.mostathmr.com/da3m/index.html حتى الذهاب المنتدى عبر هذا الرابط http://www.mostathmr.com/vb صار يودي على صفحة بيضاء لابد أن يكون عبر ه>ا الرابط http://www.mostathmr.com/vb/index.php اريد استعاد ملف htacces لكن لا اعرف حقيقة ماهي الاوامر فياليت مساعدتك او احد الاخوان | |||||
|
| |||||
| اقتباس:
اخوي الله يهديك هذا كلام تقوله هههههههههههههه والله لوعمري 10 سنين وتوني داخل النت ماسويتها الكود مااااشتغل ... واذا حبيت نسخت لك الكود بالظبط ... ولما احط رابط الصفحة يقلي الرابط غير موجود تحياتي .
__________________ والله لن ننساك ياأبا عدي !!! | |||||
|
| |||||
|
مشكلة المود اريت لا يقبل اسماء الاقسام العربية بالمتصفح يعني http://www.site.com/test/الازياء/1 الازياء = القسم 1= رقم المقال نلاحظ ان السيرفر لا يتعرف على اسم القسم ربما في سيرفرات الينكس فقط لها من حل ؟
__________________ لا اله الا الله | |||||
|
| |||||
http://www.7lema.net/archive/index.php القي نظرة على روابط الاقسام والمواضيع تجد اسم القسم وعنوان الموضوع تواجدو بالرابط وبالعربية وبشكل عام mod_rewrite تقوم برفع اللود ولكن بنسب متفاوتة الروابط العربية تقبل من جميع المتصفحات ومن جميع الانظمة للأستضافة(حسب تجربتي اتكلم)
__________________ لمراسلتي http://middleeast.arabform.com قريباً...................................... ==================== العضويه بأستخدام مشترك بين شخصين | |||||
|
![]() |
| أدوات الموضوع | |
| |