ملف الـ Htaccess هو عبارة عن ملف يتواجد عادة بين ملفات الموقع ويكون مخفيا بحيث لا يظهر من خلال برامج FTP وإنما فقط من خلال أداة التحكم بالملفات في لوحة تحكم الموقع ..
ما هو عمل هذا الملف ؟
نحتاج إلى ملف htaccess. للتحكم في الكثير من خصائص الموقع و الملفات ... وذلك من خلال أوامر يتم إدخالها في هذا الملف ... وبالتالي يقوم بقراءة هذه الأوامر وتنفيذها على ملفات الموقع ..
ما الذي نستطيع فعله من خلال ملف ملف htaccess. ؟
هذا الملف يحتوي على كثير من الأوامر ... ومنها :
1- عمل صفحات الأخطاء , كالتي تراها عندما تدخل إلى صفحة خطأ في موقع ما ..
custom error messages 2- حماية مجلدات الموقع باسم مستخدم وكلمة مرور ..
3- توجيه صفحة البداية للموقع أو لمجلد على الموقع .. كأن تكون مثلا .. main.html بدلا من
index.html 4- تعريف السرفر المستضيف للموقع بأوامر SSI التي تصممها لموقعك ..
.5- حماية الباندويث في الموقع من الاستهلاك الخارجي .. سواء في الملفات والصور ..
6- توجيه صفحة قديمة في الموقع إلى صفحة جديدة بدلا منها ..
7- إخفاء محتويات المجلد عن الأعضاء أو نوع معين من الملفات فقط في المجلد ..
8- حجب الموقع عن الزوار من دولة معينة أو جعله لزوار دولة معينة أو حجبه عن IP محدد ..
9- تعريف الخادم بلاحقات الملفات باستخدام Mime Types
وهناك أيضا أوامر أخرى ... ولكن سنكتفي بشرح هذه الأوامر لكثرة استخدامها ..
كيف أنشئ ملف htaccess. جديد ؟
يتم إنشاء ملف htaccess. جديد من خلال أي محرر نصوص .. وليكن مثلا المفكرة notebad .. ومن ثم حفظ الملف بالاسم التالي كاملا :
"htaccess."
مع ملاحظة وجود علامتي التنصيص ..
كيفية عمل صفحات الأخطاء .. custom error messages
بداية لا بد من شرح الأخطاء المحتملة لدخول الزوار إلى صفحات الموقع وهي :
400 - Bad Request .. وتعني طلب خاطئ للصفحة
401 - Authorization Required ... وتعني انه غير مرخص للزائر بعرض الصفحة
403 - Forbidden .. وتعني انه ممنوع للزائر من دخول الصفحة
404 - File not found ... وتعني أن الصفحة التي قام الزائر بطلبها غير موجودة
500 - Internal Server Error وتعني أن هناك خطأ في خادم الموقع
503 - Service Unavailable ... وتعني أن الخدمة غير متوفرة
هذه هي الأخطاء الشائعة وهناك المزيد غيرها ..
ولعمل صفحة الخطأ نكتب في ملف htaccess. الكود التالي :
كود:
كود:
ولتفصيل هذا الأمر .. ErrorDocument .. وهي الدالة الخاصة بصفحة بتعيين صفحة الخطأ . error number ... رقم الخطأ الذي سيظهر للمتصفح ... كما هو مشروح في الأعلى path .. مسار الخاص بالصفحة التي ستظهر للزائر عندما يطلب صفحة خطأ . والأمر بالكامل يكون كالتالي :
كود
كود:
code:--------------------------------------------------------------------------------ErrorDocument 404 http://www.the-soft.net/404.html --------------------------------------------------------------------------------
كما تلاحظ .. وضعنا رقم الخطأ ومسار الصفحة الخاصة به .. ولإدراج بقية الأخطاء ضعها الأوامر في الملف بشكل متتالي .. مثال :
كود:
كود:
code:--------------------------------------------------------------------------------ErrorDocument 400 http://www.the-soft.net/400.html ErrorDocument 401 http://www.the-soft.net/401.html etc ...--------------------------------------------------------------------------------
حماية مجلدات وملفات الموقع ... هل دخلت مرة إلى صفحة ما في موقع وظهرت لك نافذة تطلب منك إدخال اسم مستخدم وكلمة مرور ؟؟ بالتأكيد مررت على كثير من هذه الصفحات ولم تستطع دخولها .. وذلك لأنها خاصة بمستخدمين معيين .. وما شابه ذلك .. هذا النوع من الحماية يسمى basic HTTP authentication .. الآن سنتعلم كيف تعمل مثل هذه الصفحات في موقعك .. لنفرض أن لديك مجلد على الموقع فيه عدة صفحات لا تريد عرضها إلا لمجموعة مستخدمين على نطاق ضيق .. ماذا ستفعل ؟؟ في الواقع هناك الكثير من أنواع الحماية باستخدام لغات البرمجة كـ PHP أو جافا سكربت أو غيرها .. ولكن الأقوى هي الحماية بواسطة أوامر htaccess. كل ما عليك هو أن تنشئ ملف htaccess. جديد وتضع فيه الكود التالي ثم تضعه في المجلد الذي ترغب بحمايته :
كود:
code:--------------------------------------------------------------------------------Username1:Password1 Username2:Password2 Username3:Password3--------------------------------------------------------------------------------
طبعا هنا تستبدل Username1 باسم المستخدم و Password1 بكلمة المرور الخاصة به .. وإذا أردت مزيدا من الأمن لكلمة المرور فيمكن أن تشفرها بأحد أدوات تشفير DES المستخدمة في أنظمة يونيكس والمتوفرة بكثرة في مواقع النت .. وفي هذه الحالة طبعا ستضع مكان Password1 كلمة المرور المشفرة .. وعند عملية الدخول سيدخل المستخدم كلمة المرور قبل تشفيرها .. وستظهر في الملف بهذا الشكل تقريبا : kattan:vrAQKeuzMpslh طبعا يمكنك وضع أي عدد ترغب به من المستخدمين ... بعد ذلك سوف تحتاج لوضع الكود الخاص بالقائمة التي ستطلب من المستخدم إدخال الاسم وكلمة المرور وهو الكود التالي :
كود:
كود:
code:--------------------------------------------------------------------------------AuthUserFile /usr/local/you/safedir/.htpasswd AuthGroupFile /dev/null AuthName [أدخل اسم المستخدم و كلمة المرور] AuthType Basic order allow,deny allow from all require valid-user --------------------------------------------------------------------------------
حيث أن /usr/local/you/safedir/.htpasswd هو مسار ملف htaccess. الذي وضعنا فيه أسماء المستخدمين المصرح لهم بالدخول وكلمات المرور الخاصة بهم .. ويمكن الدخول للمجلد المحمي مباشرة عن طريق وضع الرابط التالي في المتصفح :
كود
كود:
code:--------------------------------------------------------------------------------http://usernameassword@http://www.website.com/directory/--...---------------
فقط ضع اسم المستخدم وكلمة المرور وعنوان الموقع والمجلد المحمي .. وأما إذا رغبت بحماية أحد ملفات الموقع بحيث يكون تصفح أو تحميل الملف للمجموعة التي حددتها فقط ...فهنا ستستخدم الكود التالي :
كود:
كود:
code:--------------------------------------------------------------------------------files "prog.exe|pass.php|file.zip"> AuthUserFile [/path/to/file] AuthType Basic AuthName [Text that prompts the user] require valid-user--------------------------------------------------------------------------------
فقط اكتب عدل أسماء الملفات في السطر الأول كما ترغب .. وفي السطر الثاني تضع مسار ملف htaccess. الذي وضعنا فيه أسماء المستخدمين المصرح لهم بالدخول وكلمات المرور الخاصة بهم .. تماما كما فعلنا في حماية المجلد .. يمكنك أيضا هنا وضع العدد الذي ترغب به من الملفات لكي تحميها .. أو تجعلها فقط لمجموعة محددة... توجيه صفحة البداية للموقع أو لمجلد على الموقع عادة عندما نرفع ملف باسم index.html أو index.php إلى الموقع .. يكون هذا الملف هو الصفحة الرئيسية للموقع .. الآن هل سألت نفسك لماذا هذه الصفحة ؟؟ للإجابة على سؤالك .. افتح ملف htaccess. الموجود في الموقع .. ستلاحظ فيه كود كالتالي : DirectoryIndex index.htm index.html index.php الدالة DirectoryIndex مهمتها التعريف أن أسماء الصفحات التي تلي الدالة هي صفحات البداية للموقع .. كيف يقرأ ملف htaccess. هذه الدالة : يبدأ باسم أول صفحة وهي index.htm فإن وجدها على الموقع فسيعتبرها هي ملف الصفحة الرئيسية ..والا سينتقل للاسم الثاني index.html .. وهكذا .. الآن لنفرض أن صفحة البداية لموقعك اسمها مختلف .. مثلا .. user.htm فهنا ستضع هذا الاسم بعد الدالة DirectoryIndex مباشرا ... وهنا ستكون هذه الصفحة هي صفحة البداية فعلا .. فالدالة هي :
كود:
كود:
ode:--------------------------------------------------------------------------------DirectoryIndex [file]--------------------------------------------------------------------------------
ومكان file يكون اسم الصفحة المطلوبة ... تعريف السرفر المستضيف للموقع بأوامر SSI التي تصممها لموقعك ... SSI هي اختصار لـ Server Side Includes وهو بروتوكول خاص بتضمين الكود لجميع الصفحات فإذا أردت مثلا وضع كود معين أو لنفرض هيدر لكل الصفحات فليس من الضروري وضعه في جميع صفحات الموقع وإنما من خلال SSI تضعه في صفحة واحدة ثم تضع شفرة SSI في رأس كل ملف ... في بعض الأحيان عندما تنشئ صفحة أو برنامج تحتوي على أوامر SSI وترفعها إلى موقعك تجد أن الملف لا يعمل .. والسبب يعود في ذلك إلى عدم تعريف هذا الملف للسرفر .. كل ما عليك فعله هو تعريف الملف الذي يحتوي على أوامر SSI للسرفر عن طريق ملف htaccess. وذلك بواسطة الكود التالي :
كود:
كود:
code:--------------------------------------------------------------------------------AddType text/html [Extension 1] [Extension 2] AddHandler server-parsed [Extension 1] [Extension 2]--------------------------------------------------------------------------------
حيث أن [Extension 1] و [Extension 2] هي امتداد الملفات التي تريد للسرفر أن يتعرف عليها ليعطيها الصلاحية بتنفيذ أوامر الـ SSI بشكل اتوماتيكي .. مثال ذلك :
كود:
كود:
code:--------------------------------------------------------------------------------AddType text/html .dhtml .html AddHandler server-parsed .dhtml .html--------------------------------------------------------------------------------
حيث الملفات التي تعطي أوامر للسرفر باستقبال أوامر الـ SSI هي الملفات التي تنتهي بالامتداد .. dhtml و html حماية الباندويث في الموقع من الاستهلاك الخارجي ربما لاحظت في كثير من الأحيان وصلات لصور أو ملفات في موقعك في مواقع أخرى .. وهذا بالطبع قد يتسبب بإيذاء موقعك لأنه سيستهلك الكثير من الباندويث المخصص لك شهريا .. اذاُ كيف أجعل عرض الصور التي في موقعي لا تتم إلا من خلال الموقع نفسه ..؟ وكذلك تحميل الملفات ..؟ الحل أيضا هنا يكون باستخدام أوامر ملف htaccess. لحجب الصور عن الظهور في موقع غير موقعك استخدم الكود التالي :
كود:
كود:
code:--------------------------------------------------------------------------------RewriteEngine on RewriteCond %{HTTP_REFERER} ^$ [OR] RewriteCond %{HTTP_REFERER} !^http://site/.com/.*$ [NC] RewriteCond %{HTTP_REFERER}
ما هو عمل هذا الملف ؟
نحتاج إلى ملف htaccess. للتحكم في الكثير من خصائص الموقع و الملفات ... وذلك من خلال أوامر يتم إدخالها في هذا الملف ... وبالتالي يقوم بقراءة هذه الأوامر وتنفيذها على ملفات الموقع ..
ما الذي نستطيع فعله من خلال ملف ملف htaccess. ؟
هذا الملف يحتوي على كثير من الأوامر ... ومنها :
1- عمل صفحات الأخطاء , كالتي تراها عندما تدخل إلى صفحة خطأ في موقع ما ..
custom error messages 2- حماية مجلدات الموقع باسم مستخدم وكلمة مرور ..
3- توجيه صفحة البداية للموقع أو لمجلد على الموقع .. كأن تكون مثلا .. main.html بدلا من
index.html 4- تعريف السرفر المستضيف للموقع بأوامر SSI التي تصممها لموقعك ..
.5- حماية الباندويث في الموقع من الاستهلاك الخارجي .. سواء في الملفات والصور ..
6- توجيه صفحة قديمة في الموقع إلى صفحة جديدة بدلا منها ..
7- إخفاء محتويات المجلد عن الأعضاء أو نوع معين من الملفات فقط في المجلد ..
8- حجب الموقع عن الزوار من دولة معينة أو جعله لزوار دولة معينة أو حجبه عن IP محدد ..
9- تعريف الخادم بلاحقات الملفات باستخدام Mime Types
وهناك أيضا أوامر أخرى ... ولكن سنكتفي بشرح هذه الأوامر لكثرة استخدامها ..
كيف أنشئ ملف htaccess. جديد ؟
يتم إنشاء ملف htaccess. جديد من خلال أي محرر نصوص .. وليكن مثلا المفكرة notebad .. ومن ثم حفظ الملف بالاسم التالي كاملا :
"htaccess."
مع ملاحظة وجود علامتي التنصيص ..
كيفية عمل صفحات الأخطاء .. custom error messages
بداية لا بد من شرح الأخطاء المحتملة لدخول الزوار إلى صفحات الموقع وهي :
400 - Bad Request .. وتعني طلب خاطئ للصفحة
401 - Authorization Required ... وتعني انه غير مرخص للزائر بعرض الصفحة
403 - Forbidden .. وتعني انه ممنوع للزائر من دخول الصفحة
404 - File not found ... وتعني أن الصفحة التي قام الزائر بطلبها غير موجودة
500 - Internal Server Error وتعني أن هناك خطأ في خادم الموقع
503 - Service Unavailable ... وتعني أن الخدمة غير متوفرة
هذه هي الأخطاء الشائعة وهناك المزيد غيرها ..
ولعمل صفحة الخطأ نكتب في ملف htaccess. الكود التالي :
كود:
كود:
- الكود:
code:--------------------------------------------------------------------------------ErrorDocument [error number] [path]--------------------------------------------------------------------------------
ولتفصيل هذا الأمر .. ErrorDocument .. وهي الدالة الخاصة بصفحة بتعيين صفحة الخطأ . error number ... رقم الخطأ الذي سيظهر للمتصفح ... كما هو مشروح في الأعلى path .. مسار الخاص بالصفحة التي ستظهر للزائر عندما يطلب صفحة خطأ . والأمر بالكامل يكون كالتالي :
كود
كود:
code:--------------------------------------------------------------------------------ErrorDocument 404 http://www.the-soft.net/404.html --------------------------------------------------------------------------------
كما تلاحظ .. وضعنا رقم الخطأ ومسار الصفحة الخاصة به .. ولإدراج بقية الأخطاء ضعها الأوامر في الملف بشكل متتالي .. مثال :
كود:
كود:
code:--------------------------------------------------------------------------------ErrorDocument 400 http://www.the-soft.net/400.html ErrorDocument 401 http://www.the-soft.net/401.html etc ...--------------------------------------------------------------------------------
حماية مجلدات وملفات الموقع ... هل دخلت مرة إلى صفحة ما في موقع وظهرت لك نافذة تطلب منك إدخال اسم مستخدم وكلمة مرور ؟؟ بالتأكيد مررت على كثير من هذه الصفحات ولم تستطع دخولها .. وذلك لأنها خاصة بمستخدمين معيين .. وما شابه ذلك .. هذا النوع من الحماية يسمى basic HTTP authentication .. الآن سنتعلم كيف تعمل مثل هذه الصفحات في موقعك .. لنفرض أن لديك مجلد على الموقع فيه عدة صفحات لا تريد عرضها إلا لمجموعة مستخدمين على نطاق ضيق .. ماذا ستفعل ؟؟ في الواقع هناك الكثير من أنواع الحماية باستخدام لغات البرمجة كـ PHP أو جافا سكربت أو غيرها .. ولكن الأقوى هي الحماية بواسطة أوامر htaccess. كل ما عليك هو أن تنشئ ملف htaccess. جديد وتضع فيه الكود التالي ثم تضعه في المجلد الذي ترغب بحمايته :
كود:
code:--------------------------------------------------------------------------------Username1:Password1 Username2:Password2 Username3:Password3--------------------------------------------------------------------------------
طبعا هنا تستبدل Username1 باسم المستخدم و Password1 بكلمة المرور الخاصة به .. وإذا أردت مزيدا من الأمن لكلمة المرور فيمكن أن تشفرها بأحد أدوات تشفير DES المستخدمة في أنظمة يونيكس والمتوفرة بكثرة في مواقع النت .. وفي هذه الحالة طبعا ستضع مكان Password1 كلمة المرور المشفرة .. وعند عملية الدخول سيدخل المستخدم كلمة المرور قبل تشفيرها .. وستظهر في الملف بهذا الشكل تقريبا : kattan:vrAQKeuzMpslh طبعا يمكنك وضع أي عدد ترغب به من المستخدمين ... بعد ذلك سوف تحتاج لوضع الكود الخاص بالقائمة التي ستطلب من المستخدم إدخال الاسم وكلمة المرور وهو الكود التالي :
كود:
كود:
code:--------------------------------------------------------------------------------AuthUserFile /usr/local/you/safedir/.htpasswd AuthGroupFile /dev/null AuthName [أدخل اسم المستخدم و كلمة المرور] AuthType Basic order allow,deny allow from all require valid-user --------------------------------------------------------------------------------
حيث أن /usr/local/you/safedir/.htpasswd هو مسار ملف htaccess. الذي وضعنا فيه أسماء المستخدمين المصرح لهم بالدخول وكلمات المرور الخاصة بهم .. ويمكن الدخول للمجلد المحمي مباشرة عن طريق وضع الرابط التالي في المتصفح :
كود
كود:
code:--------------------------------------------------------------------------------http://usernameassword@http://www.website.com/directory/--...---------------
فقط ضع اسم المستخدم وكلمة المرور وعنوان الموقع والمجلد المحمي .. وأما إذا رغبت بحماية أحد ملفات الموقع بحيث يكون تصفح أو تحميل الملف للمجموعة التي حددتها فقط ...فهنا ستستخدم الكود التالي :
كود:
كود:
code:--------------------------------------------------------------------------------files "prog.exe|pass.php|file.zip"> AuthUserFile [/path/to/file] AuthType Basic AuthName [Text that prompts the user] require valid-user--------------------------------------------------------------------------------
فقط اكتب عدل أسماء الملفات في السطر الأول كما ترغب .. وفي السطر الثاني تضع مسار ملف htaccess. الذي وضعنا فيه أسماء المستخدمين المصرح لهم بالدخول وكلمات المرور الخاصة بهم .. تماما كما فعلنا في حماية المجلد .. يمكنك أيضا هنا وضع العدد الذي ترغب به من الملفات لكي تحميها .. أو تجعلها فقط لمجموعة محددة... توجيه صفحة البداية للموقع أو لمجلد على الموقع عادة عندما نرفع ملف باسم index.html أو index.php إلى الموقع .. يكون هذا الملف هو الصفحة الرئيسية للموقع .. الآن هل سألت نفسك لماذا هذه الصفحة ؟؟ للإجابة على سؤالك .. افتح ملف htaccess. الموجود في الموقع .. ستلاحظ فيه كود كالتالي : DirectoryIndex index.htm index.html index.php الدالة DirectoryIndex مهمتها التعريف أن أسماء الصفحات التي تلي الدالة هي صفحات البداية للموقع .. كيف يقرأ ملف htaccess. هذه الدالة : يبدأ باسم أول صفحة وهي index.htm فإن وجدها على الموقع فسيعتبرها هي ملف الصفحة الرئيسية ..والا سينتقل للاسم الثاني index.html .. وهكذا .. الآن لنفرض أن صفحة البداية لموقعك اسمها مختلف .. مثلا .. user.htm فهنا ستضع هذا الاسم بعد الدالة DirectoryIndex مباشرا ... وهنا ستكون هذه الصفحة هي صفحة البداية فعلا .. فالدالة هي :
كود:
كود:
ode:--------------------------------------------------------------------------------DirectoryIndex [file]--------------------------------------------------------------------------------
ومكان file يكون اسم الصفحة المطلوبة ... تعريف السرفر المستضيف للموقع بأوامر SSI التي تصممها لموقعك ... SSI هي اختصار لـ Server Side Includes وهو بروتوكول خاص بتضمين الكود لجميع الصفحات فإذا أردت مثلا وضع كود معين أو لنفرض هيدر لكل الصفحات فليس من الضروري وضعه في جميع صفحات الموقع وإنما من خلال SSI تضعه في صفحة واحدة ثم تضع شفرة SSI في رأس كل ملف ... في بعض الأحيان عندما تنشئ صفحة أو برنامج تحتوي على أوامر SSI وترفعها إلى موقعك تجد أن الملف لا يعمل .. والسبب يعود في ذلك إلى عدم تعريف هذا الملف للسرفر .. كل ما عليك فعله هو تعريف الملف الذي يحتوي على أوامر SSI للسرفر عن طريق ملف htaccess. وذلك بواسطة الكود التالي :
كود:
كود:
code:--------------------------------------------------------------------------------AddType text/html [Extension 1] [Extension 2] AddHandler server-parsed [Extension 1] [Extension 2]--------------------------------------------------------------------------------
حيث أن [Extension 1] و [Extension 2] هي امتداد الملفات التي تريد للسرفر أن يتعرف عليها ليعطيها الصلاحية بتنفيذ أوامر الـ SSI بشكل اتوماتيكي .. مثال ذلك :
كود:
كود:
code:--------------------------------------------------------------------------------AddType text/html .dhtml .html AddHandler server-parsed .dhtml .html--------------------------------------------------------------------------------
حيث الملفات التي تعطي أوامر للسرفر باستقبال أوامر الـ SSI هي الملفات التي تنتهي بالامتداد .. dhtml و html حماية الباندويث في الموقع من الاستهلاك الخارجي ربما لاحظت في كثير من الأحيان وصلات لصور أو ملفات في موقعك في مواقع أخرى .. وهذا بالطبع قد يتسبب بإيذاء موقعك لأنه سيستهلك الكثير من الباندويث المخصص لك شهريا .. اذاُ كيف أجعل عرض الصور التي في موقعي لا تتم إلا من خلال الموقع نفسه ..؟ وكذلك تحميل الملفات ..؟ الحل أيضا هنا يكون باستخدام أوامر ملف htaccess. لحجب الصور عن الظهور في موقع غير موقعك استخدم الكود التالي :
كود:
كود:
code:--------------------------------------------------------------------------------RewriteEngine on RewriteCond %{HTTP_REFERER} ^$ [OR] RewriteCond %{HTTP_REFERER} !^http://site/.com/.*$ [NC] RewriteCond %{HTTP_REFERER}