x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
الدليل الكامل لاستخدام ملف htaccess. كيف يمكن الاستفادة منه والتعديل عليه وإصلاح مشاكله؟
يعد ملف .htaccess ملفاً نصياً، ولكنه من الملفات الهامة جداً التي يمكن أن تضيف الكثير من الوظائف والأوامر للموقع، وفي نفس الوقت فإنه يمكن أن يسبب الكثير من المشاكل وربما توقف الموقع بالكامل عن العمل. ويتواجد هذا الملف في السيرفرات العاملة بنظام Apache، ولكنه يكون مخفياً. والحقيقة أن اسم الملف يبدأ بالنقطة للدلالة على أنه ملف مخفي. ولإظهاره يجب إظهار الملفات المخفية.ولكن ما هي فائدة هذا الملف؟ وكيف يمكن التعديل عليه لإضافة وظائف أو تعليمات للموقع؟ وكيف يمكن كشف الأخطاء فيه وإصلاحها؟
هذا ما سنتعرّف عليه في هذا المقال المرجعي:
هو ملف مؤثر جداً على الموقع والاستضافة، إذ يحتوي معلومات قد تؤثر على السيرفر، لذلك فإنه يكون مخفياً عادةً. من الأمور التي يتحكّم بها هذا الملف:
- عمليات إعادة التوجيه redirects
- أمان الاستضافة
- إعدادات الموقع
يبدو مظهر ملف .htaccess بالشكل التالي:
- يمكن أن يقوم هذا الملف بالكثير من الوظائف منها:
- إعادة توجيه الروابط redirects
- إعادة كتابة الروابط rewriting URLs
- إنشاء صفحات أخطاء مخصصة، مثل صفحة 404 مخصصة
- إجبار الموقع على استخدام HTTPS وليس HTTP
- حماية أحد أجزاء الموقع بكلمة مرور
- استخدام prohibiting hotlinks لحماية الصور ذات حقوق الملكية من إعادة النشر في المواقع الأخرى
- تغيير الصفحة الافتراضية الأولى للموقع أو ما يُدعى بـindex page
- الإجبار على تحميل الملف بدلاً من عرضه
- حظر عناوين IP محددة والسماح لعناوين أخرى محددة بالدخول للموقع
- إعادة تكوين إعدادات الحساب
لإجراء تعديلات على ملف .htaccess
إذا رغبت بإجراء أي تعديل على ملف .htaccess فيمكنك ذلك من خلال:- لوحة التحكم من خلال النقر بزر الماوس الأيمن عليه واختيار edit لتعديل الملف بشكل مباشر. أو يمكنك تنزيله والتعديل عليه باستخدام برامج تحرير الكود مثل Notepad++.
- تنزيل الملف باستخدام FileZilla ومن ثم تعديله ورفع النسخة المعدلة.
ولكن قبل إجراء أي تعديل يجب إجراء نسخة احتياطية من الموقع والاحتفاظ بها تحسباً في حال حدوث أي مشكلة. أو يمكن تنزيل النسخة الأصلية من ملف .htaccess لاستعادتها في حال لم تنجح التعديلات التي قمت بها أو في حال رغبت باستعادة الإعدادات الافتراضية.
كما يجب عدم حذف أي تعليمات برمجية من ملف .htaccess لأنها قد تكون ضرورية. كما ينصح بتجنّب حذف هذا الملف ما لم يكن فارغاً أو كنت متأكداً تماماً من أن حذفه لن يؤثر على الموقع.
أما إذا لم تجد ملف .htaccess فيمكنك إنشاء واحد وإضافة التعليمات التي تريدها إليه.
استخدام أكثر من ملف .htaccess
يمكنك تطبيق إعدادات مختلفة على مسارات مختلفة من موقعك من خلال استخدام أكثر من ملف .htaccess واحد. حيث يمكنك -نظرياً- إنشاء ملف .htaccess في أي مسار تريده في السيرفر لتصبح مجموعة الإعدادات مخصصة لهذا المسار. ولكن احرص على:- استخدام أقل عدد ممكن من ملفات .htaccess لأن كثرة هذه الملفات قد يبطئ من سرعة السيرفر
- عندما يعثر السيرفر على ملف .htaccess في مسار معيّن فإنه يبحث عن أي ملفات أخرى في المسارات الأعلى، وهذا يزيد استهلاك موارد السيرفر
- ملفات .htaccess الموجودة في المسارات الأعلى لها الأسبقية
1. كيفية إعادة توجيه روابط محددة redirects باستخدام ملف .htaccess
اتبع الطريقة المشروحة سابقاً للوصول إلى ملف .htaccess والتعديل عليه.إذا أردت إعادة توجيه صفحة محددة ضمن الموقع إلى صفحة أخرى موجودة في نفس الموقع، مثلاً إعادة التوجيه من
example.com/oldfile.htm
إلى newfile.htm
فاستخدم إعادة توجيه 301 من خلال إضافة الكود التالي: Code:
Redirect 301 /oldfile.htm /newfile.htm
أما إذا أردت التوجيه إلى موقع (دومين) آخر، مثلاً التوجيه من
example.com/oldfile.htm
إلى example.net/newfile.htm
فاستخدم الكود التالي: Code:
Redirect 301 /oldfile.htm https://example.net/newfile.htm
أما إذا أردت توجيه الموقع بأكمله (مع كل روابطه)، مثلاً إعادة التوجيه من
example.com
إلى example.net
: Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.net/$1 [L,R=301,NC]
لإعادة توجيه روابط محددة تنتهي بلاحقة معيّنة إلى روابط أخرى بلاحقة مختلفة، مثلاً من
example.com/file.php
إلى example.com/file.htm
: Code:
RewriteEngine On
RewriteCond %{REQUEST_URI} .php$
RewriteRule ^(.*).php$ /$1.htm [R=301,L]
2. كيفية إعادة كتابة الروابط rewriting URLs من خلال ملف .htaccess
وهي أشبه بعملية إعادة التوجيه، فهي تحوّل الزائر من URL إلى آخر. وأشهر ما تستخدم هذه الطريقة في إجبار استخدام www أو عدم استخدامها.حيث تفسر محركات البحث (كجوجل) الرابطين
www.example.com
و example.com
على أنهما موقعان مختلفان. ويُفضّل اختيار أحدهما واعتماده من قبل صاحب الموقع لكي يعرضه محرّك البحث. وهذه هي الفائدة من هذه الميزة.Force non-www
عند إضافة هذه التعليمات فإن الزائر الذي يكتبwww.example.com
للتوجّه لموقعك يحوّل إلى example.com
Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301,NC]
Forcing www
عند إضافة هذه التعليمات فإن الزائر الذي يكتبexample.com
للتوجّه لموقعك يحوّل إلى www.example.com
: Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC]
يمكنك بالطبع إعادة توجيه الروابط من خلال لوحة التحكم cPanel من خلال Redirects، حيث تظهر نافذة كالتالية:
3. كيفية إنشاء صفحة خطأ 404 مخصصة باستخدام ملف .htaccess
تعد صفحة الخطأ 404 صفحة عادية توجد في كل المواقع وتنبّه الزائر إلى أن الصفحة التي طلبها غير موجودة في الموقع. لا شك أنك لاحظت أحياناً صفحات خطأ 404 مخصصة ذات مظهر ومحتوى مختلف عن بقية صفحات 404. ولكن ما الفائدة من ذلك؟بدايةً عليك إنشاء الصفحة المخصصة التي تريدها، فمثلاً إذا كنت تعمل على ووردبريس فيمكنك إنشاء صفحة جديدة وتخصيصها باستخدام أداة بناء المواقع التي تريد، أو يمكنك مثلاً إنشاء الصفحة من خلال كتابة الكود من الصفر. بعد الانتهاء من ذلك احفظ الصفحة ليتم رفعها على سيرفر الموقع.
الخطوة التالية التي سنركّز عليها هي إدراج هذه الصفحة ليعرضها الموقع على أنها صفحة الخطأ 404.
أضف لملف .htaccess الكود التالي:
Code:
# serve custom error pages
ErrorDocument 400 /errors/400.html
ErrorDocument 500
ErrorDocument 404
بعد الانتهاء من ذلك احفظ الملف وارفعه كما شرحنا سابقاً.
4. كيفية إجبار HTTPS باستخدام ملف .htaccess
إذا أردت أن تحرص على أن كل زائر يستخدم اتصالاً آمناً بشهادة SSL فيمكنك استخدام هذا الملف لإعادة توجيه الزيارات غير الآمنة. حيث يتم إعادة توجيهhttp://example.com
إلى https://example.com
. وهذا يعمل بالطبع فقط إن كنت تستخدم شهادة SSL لموقعك.لإجبار كل الزوّار على استخدام HTTPS استخدم الكود التالي في ملف .htaccess، بالطبع عليك استبدال example بدومين موقعك:
Code:
#force SSL on entire site
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://example.com/$1 [R=301,L]
5. كيفية حماية مسارات محددة من الموقع بكلمة مرور باستخدام ملف .htaccess
قد تحتاج أثناء تطوير وبناء موقعك لحمايته (أو حماية أجزاء منه) بكلمة مرور حتى يصبح جاهزاً للعرض. للقيام بذلك نحتاج لملفين أحدهما يحتوي على أسماء المستخدمين وكلمات مرورهم الخاصة، والثاني هو ملف .htaccess الذي سنضيف فيه تعليمات لطلب اسم المستخدم وكلمة مرور عند محاولة زيارة مسار معيّن. ولكننا سننشئ ملف .htaccess إضافي ونضعه في المسار الذي ترغب بحمايته، أي أننا لن نعتمد على ملف .htaccess الأساسي.بداية أنشئ ملف كلمات المرور من خلال أي محرر نصوص (مثل برنامج المفكرة التقليدية أو برنامج Notepad++) بحيث يتم كتابة اسم المستخدم ومن ثم : ومن ثم كلمة المرور. ولكن يفضّل استخدام إحدى الأدوات لتشفير هذه البيانات، ولذا يمكنك استخدام الموقع التالي لذلك.
كل ما عليك فعله هو إدخال كل اسم مستخدم وكلمة المرور الخاصة به ومن ثم الضغط على Generate وسينشئ لك الموقع سطراً عليك لصقه في الملف النصي في سطر خاص به.
وهكذا كرر هذه الخطوة لإضافة كل المستخدمين وكلمات مرورهم للملف كما في الصورة:
احفظ الملف الآن بالاسم الذي تريده، سنحفظه نحن باسم .htpasswd. احرص عند حفظ الملف على اختيار All Files.
الخطوة التالية هي رفع هذا الملف إلى سيرفر موقعك، ويُنصح بعدم رفعه إلى أحد المجلدات العامة التي يمكن أن يطلع عليها أي شخص. بل ننصحك مثلاً بإنشاء مجلّد جديد ومنح الأذونات لمشاهدته للمستخدم فقط، ومن ثم رفع هذا الملف إليه. اخترنا نحن المسار التالي:
Code:
/newfolder/.htpasswd
والآن علينا إنشاء ملف .htaccess الجديد. بنفس الطريقة أنشئ مستنداً نصياً جديداً وقم بالتعديل عليه من خلال تطبيق المفكرة أو Notepad++. الصق الكود التالي في الملف:
Code:
AuthType Basic
AuthName "Members Only"
AuthUserFile /newfolder/.htpasswd
require valid-user
في السطر الأول حددنا نوع المصادقة المطلوب، وBasic هو النوع المناسب في حالتنا هذه. أما في السطر الثاني فهو يحتوي على جملة تعرض للزائر عند طلب اسم المستخدم وكلمة المرور. في السطر الثالث مسار الملف الذي يحتوي على أسماء المستخدمين وكلمات المرور المشفّرة. وفي السطر الرابع يتم تحديد الأشخاص الذين بإمكانهم مشاهدة المجلد (أو المسار)، وهو كما هو مذكور valid-user أي المستخدمين الموجودين في الملف .htpasswd.
بالطبع عليك التعديل على الكود بما يناسب اسم ملف كلمات المرور ومساره.
والآن ارفع هذا الملف إلى المسار الذي تريد حمايته بكلمة مرور.
وهكذا عندما ستحاول زيارة المسار المحمي سيطلب منك المتصفح كتابة اسم المستخدم وكلمة المرور.
هناك طريقة أخرى لحماية مسار معيّن بكلمة مرور، ولا تتطلب التعامل مع التعليمات البرمجية. وهذا عن طريق لوحة تحكم cPanel. علماً أن النتيجة تكون واحدة، لأن لوحة التحكم تقوم بإجراء هذه التعديلات على ملف .htaccess نفسه.
انتقل للوحة التحكم وابحث عن Directory Privacy.
في الصفحة التالية عليك تفعيل Password protect this directory واختيار اسم للمجلد الذي تريد حمايته، ومن ثم اختر Save
أخيراً عليك إنشاء مستخدم وكلمة مرور وتأكيدها قبل الضغط على Save
لإزالة الحماية بكلمة المرور ما عليك سوا إلغاء تفعيل Password protect this directory كما في الخطوة السابقة، ومن ثم حفظ التغييرات.
6. استخدام prohibiting hotlinks من خلال ملف .htaccess
عند استخدام الصور في موقعك فيمكنك إما رفع الصور على السيرفر خاصتك، أو يمكن استخدام صور مستضافة في مواقع أخرى وهذا ما يدعى بـhotlinking.وفي حال كانت الصور الأصلية التي رفعتها على سيرفرك قد تم استخدامها في مواقع أخرى باستخدام hotlinking، فإنك ستلاحظ ازدياداً في استهلاك موارد السيرفر. لأن تحميل هذه الصور في المواقع الأخرى سيكون على عاتق سيرفرك. وهنا يأتي دور hotlink protection.
يمكن تفعيل ذلك من خلال ملف .htaccess وذلك من خلال إضافة الكود التالي:
Code:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)example.com/.*$ [NC]
RewriteRule \.
7. كيفية تغيير الصفحة الافتراضية index page في ملف .htaccess
وهي مفيدة في حال كنت تقوم بتغيير الاستضافة من شركة لأخرى، لأن الشركات المختلفة تستخدم أسماء مختلفة للصفحة الافتراضية.كل ما عليك فعله هو إضافة الكود التالي لملف .htaccess:
Code:
#Alternate default index page
DirectoryIndex first.html
حيث اخترنا في المثال السابق الصفحة المسماة first.html لتكون الصفحة الافتراضية التي يبحث عنها السيرفر. يمكن إضافة أكثر من صفحة، ففي حال لم يعثر السيرفر على الصفحة first.html فإنه سيبحث عن index.htm وثم index.html وثم index.php. والترتيب من الأيسر للأيمن كالتالي:
Code:
#Alternate default index pages
DirectoryIndex first.html index.htm index.html index.php
أخيراً لا تنسى حفظ التغييرات. وننبه مرة أخرى إلى ضرورة عدم التعديل على ملف .htaccess إن لم تكن تعرف ما الذي تقوم به فعلاً.
8. كيفية الإجبار على تحميل الملف بدلاً من عرضه بواسطة ملف .htaccess
بشكل افتراضي عندما ينقر الزائر على ملف PDF أو ملف صوتي أو فيديو مرفوع على موقعك فإنه سيعرضه في نافذة جديدة في المتصفح. ويمكن للزائر بعد ذلك تحميله من خلال المتصفح الذي يستخدمه. ولكن ماذا لو أردت أن يبدأ تحميل الملف مباشرة عند النقر عليه؟ هذا سيسهّل الأمر على الزائر كثيراً.للإجبار على تحميل الملف بدلاً من عرضه قم بتعديل ملف .htaccess واضف السطر التالي:
Code:
AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4
حي يمكنك إضافة لاحقة الملفات التي تريد إجبار السيرفر على تحميلها بدلاً من عرضها.
9. كيفية حظر عناوين IP محددة أو زوّار محددين باستخدام ملف .htaccess
يتم ذلك من خلال إضافة الكود التالي مع اختيار العناوين المحظورة أو المسموحة: Code:
//Block users by IP
order allow,deny
deny from 192.168.1.1
allow from
يمكن أيضاً إذا كنت لا تزال في مرحلة تطوير الموقع وإنشائه منع السيرفر من عرض أي ملفات لكل المستخدمين عداك. وهذا من خلال التعليمات:
Code:
Order deny,allow
Deny from all
Allow from xxx.xxx.xxx.xxx
حيث xxx.xxx.xxx.xxx هو عنوان IP الخاص بك. يمكنك مثلاً استبدال آخر 3 خانات بـ0/12 وهذا يعني مجالاً من 0 لـ12، أي أنه يوفّر عليك الوقت لكتابة كل عناوين IP المسموح لها بزيارة الموقع.
لحظر كل الزوّار بغض النظر عن الـIP استخدم السطر التالي:
Code:
Deny from all
يمكنك أيضاً حظر الزوّار القادمين من referrer محدد (مثل موقع بدومين محدد). وذلك من خلال:
Code:
RewriteCond %{HTTP_REFERER} block-this-referer\.com [NC,OR]
RewriteCond %{HTTP_REFERER} and-block-traffic-that-this-site-sends\.com [NC]
RewriteRule .* - [F]
إصلاح الأخطاء في ملف .htaccess
في حال ظهور أخطاء عند محاولة الوصول لموقعك فقد يكون ملف .htaccess هو السبب. للتأكّد من ذلك اذهب لمدير الملفات في لوحة التحكم وغيّر اسم الملف لـ.htaccess.old مثلاً. ثم جرّب الدخول للموقع. فإذا لم تظهر الأخطاء السابقة عندها، فهذا يعني أن المشكلة تكمن فعلاً في ملف .htaccessأما إذا بقيت المشكلة فعليك إعادة كل شيء كما كان لكي لا يسبب ذلك أي مشاكل في الموقع عند إصلاح المشكلة فعلاً.
ويمكن ذلك من خلال استعادة ملف .htaccess الأصلي الذي قمت بأخذ نسخة احتياطية عنه في البداية، أو استعادة نسخة احتياطية سابقة من كامل الموقع.
ولكن…
السؤال الذي يطرح نفسه هو: طالما أنه يمكن القيام بهذه التعديلات من خلال لوحة التحكّم فما هي فائدة هذا الملف؟
والجواب أن ذلك ضروري في الاستضافات التي لا تزوّدك بإمكانات للتعديل على ملفات الإعدادات للسيرفر Apache ولا لوحة تحكّم cPanel. فهذا الملف يعتبر الجسر الواصل بين حساب cPanel العادي وإعدادات سيرفر Apache المتقدّمة. وهذا ما يجعله هاماً جداً ومفيداً جداً في نفس الوقت.
هل أضاف هذا المقال لمعلوماتك؟ إذاً شاركه مع أصدقائك.