ما هو تَخريْج؟
هو مدير عناوين ويب (URLs) وموجّه بسيط جداً ومفتوح المصدر مبني بلغة PHP قابل للتخصيص، مناسب للمواقع البسيطة.
دليل الاستخدام:
كل ما عليك فعله هو
تنزيل الكود المصدري (source code)، وتخزينه في جذر الويب الخاصّ بك، يَفتَرِض تَخريْج أن صفحات الويب الخاصّة بك موجودة داخل مجلد بعنوان
pages موجود تحت جذر الويب الخاصّ بك مباشرةً (يمكنك تغيير ذلك من خلال تعديل بسيط على التعليمة البرمجيّة في السطر رقم 77)، كما ويفترض أنك تستخدم نَسْق (layout) موحّد لجميع الصفحات (header و footer) وموجودة في مجلد بعنوان
layout وموجود تحت جذر الويب الخاصّ بك مباشرةً (يمكنك تعديله أو إلغاؤه من خلال مسح السطرين رقم 75 و79).
في حال استخدمت تَخريْج كما هو، فإن تصنيف الملفات في جذر الويب الخاص بك سيكون يشبه هذا *:
root
│
├── index.php
│
├── layout
│   │
│   ├── header.php
│   └── footer.php
│
└── pages
    │
    ├── home.php
    ├── 404.php
    ├── about.php
    ├── contact.php
    │
    └── thread
        │
        ├── add.php
        ├── view.php
        └── index.php
ببساطة، لو طلبت العنوان yoursite.com فإنّ ملف home.php سيُعرض، ولو طلبت yoursite.com/about فإنّ ملف about.php سيُعرض، ولو طلبت العنوان yoursite.com/thread/add فإنّ ملف add.php سيُعرض، وهكذا، مع ذكر أن ملفيّ header.php و footer.php سيُعرضان مع كلّ ملف يتم عرضه (header.php قبله و footer.php بعده) ما لم تقم بإلغائهما أو تعديلهما.
* ما في الخط المائل هي أمثلة
ملاحظة مهمّة:
ملف .htaccess الخاص بك يجب أن يحتوي الأسطر التالية:
1 | RewriteEngine On |
2 | RewriteCond %{REQUEST_FILENAME} !-f |
3 | RewriteCond %{REQUEST_FILENAME} !-d |
4 | RewriteRule ^/?(.*) index.php [L] |
التنزيل والتطوير:
تَخريْج هو بذرة مفتوحة المصدر لمدير عناوين ويب وموجّه بسيط جداً سيتم التطوير عليه لاحقاً، يمكنك المشاركة في تطويره أو تحميله على
GitHub.
أو يمكنك تحميله مباشرة من
هنا.
الكود المصدري:
| |
| <?php |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| if (!empty($_SERVER['REQUEST_URI'])) |
| { |
|     $root = dirname(__FILE__); |
| |
| |
|     $file_name = $_SERVER['REQUEST_URI']; |
| |
| |
| |
| |
|     if ($file_name == '/index.php' || $file_name == '/') |
|     { |
|         $file_name = 'home'; |
|     } |
|      |
|      |
|      |
|      |
|     switch ($file_name) { |
|         case 'banana': |
|             $title = 'I love banana!'; |
|             $description = 'I love banana!'; |
|             break; |
|         default: |
| |
|             $title = 'My lovely site!'; |
|             $description = 'You will fall in love with my site!'; |
|             break; |
|     } |
| |
| |
| |
|     if (!file_exists($root . '/pages/' . $file_name . '.php')) |
|     { |
|         header('HTTP/1.0 404 Not Found'); |
|         $file_name = '404'; |
|     } |
| |
|      |
|     require_once $root . '/layout/header.php'; |
|      |
|     require_once $root . '/pages/' . $file_name . '.php'; |
|      |
|     require_once $root . '/layout/footer.php'; |
|     exit; |
| } |
| |