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

الموضوع: مشكلة فى التغيير إلى روابط صديقة بأستخدام mod_rewrite

  1. #1

    مشكلة فى التغيير إلى روابط صديقة بأستخدام mod_rewrite



    السلام عليكم

    إخوانى الاعزاء أريد تحويل الروابط عندى إلى روابط صديقة بأستخدام الـ mod_rewrite , لدى المثال التالى

    كود .htaccess
    كود PHP:
    RewriteEngine On
    RewriteRule 
    ^index/(.*)$ index.php?usr=$[L
    كود php, html
    كود PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title></title>
        </head>
        <body>
            <?php 
            
    echo $_GET['usr'];
            
    ?>
            <a href="index.php?usr=10">Click Here</a>
        </body>
    </html>

    المطلوب من هذا الكود هو عند الضغط على الوصلة التالية
    كود:
    <a href="index.php?usr=10">Click Here</a>
    تظهر الوصلة بالشكل التالى فى شريط العنوان
    كود:
    domain.com/projects/index/10
    لكن للاسف عند الضغط على الوصلة السابقة تظهر فى شريط العنوان بالشكل التالى
    كود:
    domain/projects/index.php?usr=10

    فما سبب ظهور الوصلة بالشكل القديم بدلا من ظهورها كرابط صديق ؟





    التعديل الأخير تم بواسطة أنا مسلم ; 01-01-2013 الساعة 12:00 PM


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    May 2006
    المشاركات
    307


    يجب عليك تعديل الكود
    من
    كود PHP:
    <a href="index.php?usr=10">Click Here</a
    الى
    كود PHP:
    <a href="projects/index/10">Click Here</a
    والا لن يعمل معك لان ملف htaccess لايقوم باي تغيير على صفحتك او السكربت
    هو يقوم بتوجيه الاباتشي لاي زائر يقوم بزيارة رابط

    domain.com/projects/index/10

    يجعل ملفاتك تتعامل معه كانه رابط
    domain/projects/index.php?usr=10
    فقط





    __________________
    دليل المواقع العربي
    http://www.dirarab.com/

  3. #3


    متشكر جدا اخى العزيز - samry على ردك

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


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


    فهل هذا ايضا صحيح ؟





    __________________
    لا إله إلا الله محمد رسول الله

  4. #4
    عضو نشيط
    تاريخ التسجيل
    Apr 2010
    المشاركات
    196


    متشكر جدا اخى العزيز - samry على ردك

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

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


    فهل هذا ايضا صحيح ؟
    لست مضطراً إلى وضع الشرط قبل كل رابط، تستطيع وضع هذا الشرط في السطور البرمجية المسؤولة عن إنشاء الروابط.





    التعديل الأخير تم بواسطة Blank ; 05-01-2013 الساعة 09:29 AM
    __________________
    Contact Me

  5. #5
    عضو نشيط جدا
    تاريخ التسجيل
    May 2006
    المشاركات
    307


    متشكر جدا اخى العزيز - samry على ردك

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


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


    فهل هذا ايضا صحيح ؟

    توجد طريقتين واحده سهلة والثانية ايضا سهلة بس تحتاج التعديل على جميع الروابط


    سنضيف هذا في ملف config.php
    كود PHP:
    $rewrite_mod true
    تفعيل او تعطيل الروابط الصديقه
    لتنشيط true او 1
    لتعطيل false او 0

    اسفل منه اضف التالي
    كود PHP:
    function rewrite()
    {
        
    $contents ob_get_contents();
        
    ob_end_clean();
        
    $rewrite_out = array(
            
    "projects/index/\\1"
        
    );
        
    $rewrite_in  = array(
            
    "'(?<!/)index.php\?usr=([0-9]*)'"
        
    );
        
    $rewrite     preg_replace($rewrite_in$rewrite_out$contents);
        echo 
    $rewrite;


    ولكي يعمل معي يجب وضع الكود
    كود PHP:
    if ($rewrite_modrewrite(); 
    في اسفل الصفحه ( الفوتر )

    وهذا مثال يعمل بكفائه
    كود PHP:
    <?php
    ob_start
    (); 
      
    $rewrite_mod true;


    function 
    rewrite()
    {
        
    $contents ob_get_contents();
        
    ob_end_clean();
        
    $rewrite_out = array(
            
    "projects/index/\\1"
        
    );
        
    $rewrite_in  = array(
            
    "'(?<!/)index.php\?usr=([0-9]*)'"
        
    );
        
    $rewrite     preg_replace($rewrite_in$rewrite_out$contents);
        echo 
    $rewrite;
    }

     
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title></title>
        </head>
        <body>
            <a href="index.php?usr=10">Click Here</a>
            <a href="index.php?usr=145">Click Here</a>
            <a href="index.php?usr=12">Click Here</a>
            <a href="index.php?usr=12546">Click Here</a>
            <a href="index.php?usr=12546546">Click Here</a>
            <a href="index.php?usr=87">Click Here</a>
            <a href="index.php?usr=87">Click Here</a>
            <a href="index.php?usr=66">Click Here</a>
            <a href="index.php?usr=66">Click Here</a>
            <a href="index.php?usr=66">Click Here</a>
            <a href="index.php?usr=9">Click Here</a>
            <a href="index.php?usr=8">Click Here</a>
            <a href="index.php?usr=6">Click Here</a>
            <a href="index.php?usr=147">Click Here</a>
            <a href="index.php?usr=22">Click Here</a>
            <a href="index.php?usr=22">Click Here</a>
            <a href="index.php?usr=22">Click Here</a>
            <a href="index.php?usr=22">Click Here</a>
            <a href="index.php?usr=22">Click Here</a>
            <a href="index.php?usr=22">Click Here</a>
            <a href="index.php?usr=22">Click Here</a>    
        </body>
    </html>
    <?php if ($rewrite_modrewrite();?>
    انتهى



    الطريقة الثانية
    اضافة الفونكشن في الملفات الرئيسية
    كود PHP:
    function my_url_seo($id)
    {
        global 
    $rewrite_mod;
        if (
    $rewrite_mod) {
            return 
    'projects/index/' $id;
        } else {
            return 
    'index.php?usr=' $id;
        }

    واستبدال الروابط القديمة
    كود PHP:
    <a href="index.php?usr=10">Click Here</a
    استبدالها بهذا الشكل
    كود PHP:
    <a href="<?php echo my_url_seo(10)  ?>">Click Here</a>

    لتعطيله او تفعيله عبر
    كود PHP:
    $rewrite_mod true
    انتهى



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





    __________________
    دليل المواقع العربي
    http://www.dirarab.com/





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

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض