النتائج 1 إلى 7 من 7

الموضوع: الـ mod_rewrite ، تفاصيل اكثر (1)

  1. #1
    عضو جديد
    تاريخ التسجيل
    Apr 2004
    المشاركات
    19

    الـ mod_rewrite ، تفاصيل اكثر (1)



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

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

    الـ mod_rewrite ، اسم مر عليكم من قبل؟ صحيح؟

    بكل بساطة ، هي أداة للتلاعب في العناوين URLs ، وتعمل عبر إضافة mod_rewrite إلى الخادم أباتشي -apache- ، ولها قواعدها وطرق كتابتها ، وهي تستخدم في نفس الوقت العبارات المنتظمة regular-expression ، كما أن هذه القواعد والشروط يمكن للمستخدم كتابتها في موقعه خاص عبر إدراجها في ملفات .htaccess ، أو عبر مدير الخادم في الملف الرئيسي httpd.conf.

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

    لا انسي إن أردنا ذكر تاريخ إضافة الاباتشي (اقصد الـ mod_rewrite ) فهي كانت من ابتكار Ralf S. Engelschall في عام 1996م ثم قدمها كـ هدية إلى مجموعة أباتشي في عام 1997م


    الآن لنبدأ العمل !
    لنبدأ بفتح ملف .htaccess ، ولنرى ماذا يجب أن نكتب (اعلم أن بعض برامج الـ FTP لا تظهر لك أي ملف يبدأ بالنقطة لذلك عليك تفعيل ذلك في البرنامج أو استخدام إدارة الملفات عبر لوحة تحكم الموقع) - ( انتبه : فالنقطة في اسم الملف .htaccess هي في بداية الملف وليس نهايته )

    كود:
    RewriteEngine on

    ماذا يعني ما سبق؟
    هذه العبارة الأولى التي يجب أن تتعلمها ، وهي تخبر الخادم انه عليه تفعيل محرك الـ rewriting ، لكن لماذا؟

    لأنها في الواقع مغلقة بشكل افتراضي ويجب أن يتم تفعيلها في كل ملف تريد أن تصدر مثل هذه الأوامر ، وأحب أن انوه إلى أن بعض الخوادم تعطل هذه الميزة بشكل كلّي ، أي انه حتى مع استخدامك للعبارة السابقة فلن يعمل المحرك.

    RewriteOptions inherit| MaxRedirects=number


    مممم ، المقصود من العبارة RewriteOptions هي تحديد خيارات معينة وهي تحتمل قيمتين مذكورة بالأعلى:

    Inherit : وتعني وراثة الخصائص ، أي إذا وضع ملف الـ .htaccess في مجلد فرعي ، بهذا الخيار سوف يتم وراثة أي خصائص لملفات .htaccess كانت موجودة في المجلد الأب، وتصبح كتابة العبارة بالشكل التالي:

    كود:
    RewriteOptions inherit

    الاحتمال الثاني هو:

    MaxRedirects=number : وهي تعني عدد مرات إعادة التوجيه ، وافتراضياً هي 10 ، ومن غير المعتاد أن تكون أكثر من ذلك إلا إن أحببت ، وبالطبع لتغيير ذلك يتم وضع الرقم بدل العبارة number فتصبح بالشكل النهائي :

    كود:
    RewriteOptions MaxRedirects= 15

    العبارة الثالثة:
    إذا كان لدينا مسار قديم يحمل الشكل التالي:

    كود:
    dir1/dir2/devpedia1.html

    وكنّا نريد التلاعب بالروابط بحيث نوجد روابط بديلة مختصرة لهذه العملية، ولنفترض أننا نريد أي شخص يأتي من الرابط على الشكل التالي :

    كود:
    dir/devpedia1.html
    بكل بساطة أولا يجب علينا استخدام العبارة التالية:

    كود:
    RewriteBase URL-path
    وهي تعني تحديد المجلد الأساسي الذي سوف يتم التحويل منه، أي إذا كتبنا:

    كود:
    RewriteBase /dir
    في هذه الحالة أي ملفات تأتي تحت المجلد dir سوف يتم معالجتها حسب الأسطر القادمة،

    العبارة الرابعة:

    كود:
    RewriteRule Pattern Substitution

    العبارة هي RewriteRule ، وتعود فائدتها حيث أنها تحتوي على الرابط الأصلي الذي سوف يتم فتحه للمستخدم دون ظهور رابطه لأي سبب كان.

    كود:
    RewriteRule ^devpedia1.html$ devpedia2.html
    هذه العبارة هي العبارة الأهم في الـ mod_rewrite لأنها هي التي تحتوي على الروابط الأصلية والروابط المتلاعب بها.

    أولا : ما بين الـ ^ و $ هي العبارة التنكرية التي سوف يستخدمها المستخدم في المتصفح.

    ثانياً : الجملة الثالثة الغير محاطة بشيء وهي في مثالنا devpedia2.html فهي العبارة التي سوف يتم إعادة توجيه المستخدم لها عند طلب العبارة التنكرية.

    مممم ، لنقم الآن بتجربة مثال بسيط لذلك.
    افتح ملف الـ .htaccess واكتب فيه:

    كود:
    RewriteEngine on
    RewriteBase /dir1/dir/2
    RewriteRule ^devpedia1.html$ devpedia2.html

    وقم بحفظ الملف في المجلد

    كود:
    /dir
    الآن أي طلب من موقعك على الشكل

    كود:
    http://www.domain.com/dir/devpedia1.html
    سوف يتحول لكن دون أي يظهر التحول للمستخدم إلى العنوان:

    كود:
    http://www.domain.com/dir1/dir2/devpedia2.html

    نستنتج من السابق ، أننا يجب أن نضع ملف الـ .htaccess في المجلد التنكري، لكن ماذا إذا كنت افترضت أن يكون لديّ العديد من المجلدات التنكرية؟ هل يجب أن أضع ملف .htaccess في العديد من المجلدات؟

    بالطبع لا ، حيث يمكنك وضع الـ .htaccess في المجلد الرئيسي بالمحتوى التالي:


    كود:
    RewriteEngine on
    RewriteBase /dir1/dir/2
    RewriteRule ^dir/devpedia1.html$ devpedia2.html

    سوف يصبح أي دخول للمسار dir/devpedia1.html يتحول مباشرة إلى الملف devpedia2.html الموجود داخل المسار /dir1/dir/2 .

    كما أحب أن انوه إلى انه يمكن اختصار RewriteBase بدمجه بالعبارة أسفل منه ، لكن هو في الأصل مفيد في حالة كان هناك لديك الكثير من الـ RewriteRule وكلها تقع في نفس المجلد فهي تختصر الوقت والجهد.

    من الأشياء المهمة في العبارة RewriteRule أنها تتقبل المتغيرات بشكل عبارات منتظمة.

    اعتقد أننا نحتاج مقالة أخرى، نراكم في الجزء الثاني بإذن الله : ).

    :: كتبه : ابو خالد
    :: المصدر : مجتمع مطوري المواقع - الـ mod_rewrite ، تفاصيل اكثر (1)






    __________________
    إستخدم ملفك الخاص لكتابة توقيعك


  2. #2
    عبدالعزيز الزرعوني
    تاريخ التسجيل
    Feb 2004
    المشاركات
    3,128


    بارك الله فيك
    سأعاود قراءته بالتفصيل
    شكراً





    __________________
    مدونة المبدع العربي

  3. #3


    هل يمكن أن تكون العناوين عربي ؟
    وما سلبيات ذلك
    مع العلم أن الفايرفوكس يظهرا رموز لكن الإكسبلورر يظهرها عربي






  4. #4
    عضو نشيط
    تاريخ التسجيل
    Jun 2005
    المشاركات
    287


    السلام عليكم ورحمة الله وبركاته
    مقال ممتاز ونتمنى المزيد
    بالفعل نحن نفتقر الى بعض المعلومات المهمة حول العديد من الامور
    ومن بينها mod_rewrite
    ولي سؤال بالمناسبة
    لو كان الرابط بهذا الشكل
    index.php?page=home
    فهل يكمن تفعيل ال mod_rewrite لها وكيف يتم ذلك






  5. #5
    عضو نشيط جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    495


    أخوي Eng_Man

    ضع هذا الكود بملف .htaccess

    كود:
    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule (.*)\.htm$ /index.php?page=$1






    __________________
    :: للمراسلة ::
    sala101[]hotmail.com

  6. #6
    عضو فعال جدا
    تاريخ التسجيل
    Oct 2003
    المشاركات
    2,775


    أستمر استمر
    انا وياك
    ودي افهم 100%
    بإنتظار التكملة
    شكرا جزاك الله الف خير






  7. #7
    عضو جديد
    تاريخ التسجيل
    Apr 2004
    المشاركات
    19


    المبدع العربي
    حياك الله اخي وصديقي المبدع،

    المجروح
    لم اقم بالتجربة ، لك سوف اقوم بذلك واخبرك بالنتائج بإذن الله،
    امّا عن السلبيات سمعت انه يقوم بالضغط على السيرفر وبالتالي ارتفاع اللود،
    ولكن لست متأكد من صحة ذلك.

    Eng_Man
    بالطبع يمكن اخي الكريم ، كما ذكر لك الاخ Nssaf ، وبإذن الله في الجزء الثاني سوف اشرح اكثر حول كيفية القيام بذلك بالتحديد مع تطبيق لذلك.

    Nssaf
    شكراً لك اخي على المشاركة

    الغريم دوت كوم
    بإذن الله الجزء الثاني راح يغطي جميع الاجزاء المتبقية في هذه التقنية.





    __________________
    إستخدم ملفك الخاص لكتابة توقيعك





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
0
موقع مكملات غذائية | نظارات طبية | أضف موقعك هنا