شرح شامل لملف htaccess: وظائف الملف، واستخداماته، وعمل أهم التعديلات

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


أين يوجد ملف htaccess وكيف يمكن التعديل عليه؟ 

ملف htaccess من الملفات التي توجد داخل مجلد الملفات الخاص بالووردبريس ولا يظهر في واجهة الموقع للمستخدمين وإنما يمكن الإطلاع عليه والتعامل معه من قبل مدير الموقع عن طريق لوحة التحكم cPanel، أو من خلال بروتوكول FTP.

يمكنك الوصول بسهولة إلى الملف عبر الدخول إلى مدير الملفات file manager الخاص بموقعك، وستجده متواجد بجوار ملفات الووردبريس :

عندما تقوم بفتح الملف ستجد فيه بعض الأكواد والرموز التي تشبه الصورة التالية: 

ملحوظة: بعض شركات الإستضافة تقوم بإخفاء ملف htaccess داخل مدير الملفات، وفي حال كان مخفيا ولم تستطع التوصل إليه بشكل مباشر، يمكنك الوصول إليه من خلال الدخول إلى مدير الملفات

ثم ستجد زر إعدادات أعلى الصفحة، لتقوم بالضغط عليها: 

ستظهر لك في صفحة الإعدادات خيارات متعددة، ستختار منها إظهار الملفات المخفية، ثم تضغط على Save

بعد ذلك سيظهر أمامك ملف htaccess داخل مدير الملفات بشكل مباشر إلى جوار باقي ملفات الووردبريس الخاص بموقعك. 

أما إذا قمت بكافة الخطوات السابقة ولم يظهر لك الملف، فهذا يعني أن نسخة الووردبريس لديك لا تحتوي عليها من الأساس، ويمكنك القيام بإنشاءه بنفسك بكل سهولة، من داخل مدير الملفات، تضغط على “ملف جديد” وتقوم بتسميته “htaccess.” .

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

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

 وبذلك يكون لديك ملف htaccess يمكنك الإستفادة منه كما سنوضح لك بالشرح التالي.


الوظائف التي يمكن القيام بها باستخدام ملف htaccess 

إليك قائمة كامل بأهم الوظائف التي يمكنك القيام بها لتعزيز أمان موقعك باستخدام ملف htaccess: 

1- إعادة توجية رابط قديم في موقعك إلى رابط آخر جديد redirect 301 

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

نفترض أن الرابط المراد تغيير هو : http://example.com/try/index.php

وأن الرابط الجديد المراد التوجه إليه هو: http://example.com/try/new/html 

فنقوم بكتابة الكود التالي داخل ملف htaccess لكي يتم عملية إعادة التوجية من الرابط القديم إلى الرابط الجديد : 

Redirect 301 /try/index.php https://Example.com/try/new.html

حيث أن الرابط القديم يكتب فقط الإمتداد الخاص به بعد Redirect 301 (دون كتابة اسم الدومين)، وأما الرابط الجديد يتم كتابته كاملا كما تشاهد في الكود السابق. 

كما يمكنك القيام بالعديد من أنوع إعادة التوجيه Redirect على النحو التالي: 

<< التحويل من Non-www إلى WWW ، يكون الكود الخاص بالتحويل كالتالي: 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
</IfModule>

<< التحويل من www إلى Non-www ، ويكون الكود كالتالي: 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule (.*) http://example.com/$1 [R=301,L]
</IfModule>

تحويل الروابط http إلى https ، حيث يكون الكود كالتالي: 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

وفي حالة تحويل https إلى http يكون الكود كالتالي: 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

<< التحويل من دومين Domain إلى آخر يكون الكود كالتالي: 

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
</IfModule>

<< تحويل الصفحات ذات الإمتدادات مثل html. إلى روابط بدون هذا الإمتداد: حيث يكون الكود كالتالي: 

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/?(.*).(html)$ /$1 [R=301,L]

</IfModule>

وفي حال إذا كان امتداد الصفحات المراد تحويلها هو php. سيكون الكود : 

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/?(.*).(php|html)$ /$1 [R=301,L]

</IfModule>

<< التحويل من نطاق فرعي subdomain إلى صفحة فرعية داخل الموقع. في هذه الحالة نريد تحويل روابط الدومين الفرعي إلى رابط صفحة داخلية ما بالموقع، وليكن على سبيل المثال نريد تحويل الدومين الفرعي : blog.example.com 

إلى الصفحة : example.com/blog 

سيكون كود التحويل كالتالي: 

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ http://https://www.example.com/blog/$1 [L,NE,R=301]

</IfModule>

مع مراعاة أن ملف htaccess في هذه الحالة لابد أن يكون متواجد داخل ملفات الدومين الفرعي subdomain . 

2- حظر عنوان IP من الدخول إلى موقعك 

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

Order Deny,Allow
Deny from 127.124.12.1

مع استبدال 127.124.12.1 بعنوان الأي بي الفعلي المراد حظره. 

3- حماية الدخول إلى صفحة مدير الووردبريس Wp-admin 

نفترض انك تريد منع أي شخص من الوصول إلى صفحة إدارة الووردبريس الشهيرة wp-admin وترغب فقط بالسماح لجهاز واحد أو عدد معين من الاجهزة التي تستطيع الوصول اليه، كل ما عليك فعله هو وضع الكود التالي في ملف htaccess : 

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from 11.11.11.111
</LIMIT>

مع مراعاة استبدال 11.11.11.111 بال IP المراد السماح له فقط بالدخول إلى منطقة wp-admin الخاصة بموقع الووردبريس. 

5- حظر تنفيذ أوامر PHP داخل مجلدات الووردبريس 

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

ولمنع ذلك النوع من الهجمات على موقعك، يمكنك انشاء ملف htaccess جديد تماما ووضع الكود التالي بداخله : 

<Files *.php>
deny from all
</Files>

ويجب أن تقوم برفع هذا الملف htaccess إلى داخل مجلد wp-content/uploads وايضا داخل مجلد wp-includes . وذلك لأن هذه الملفات تكون عرضة لبرامج القرصنة من هذا النوع. 

6- حماية الوصول إلى ملف wp-config.php 

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

<files wp-config.php>
order allow,deny
deny from all
</files>

7- حظر المواقع الأخرى مع استدعاء الصور من داخل موقعك أو ما يسمى image hotlinking 

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

لذلك وضع الكود التالي داخل ملف htaccess يحميك من الربط السريع لصور موقعك لدى المواقع الأخرى: 

#disable hotlinking of images with forbidden or custom image option
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]

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

8- حماية الوصول إلى ملف htaccess. 

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

و لحظر الوصول إلى ملف htaccess يمكنك وضع الكود التالي داخل ملف htaccess نفسه : 

<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

9- زيادة حجم الملفات المسموح برفعها في الووردبريس

توضح الصورة السابقة الرسالة التي تخبرك بأن الحد الأقصى المسموح به لرفع الملفات 50 ميجا بايت فقط لكل ملف. وهنا يأتي دور ملف htaccess. للتحكم في ذلك الحد الأقصى، حيث يمكنك اضافة الكود التالي لتخصيص حد معين لحجم الملفات المرفوعة داخل الووردبريس: 

php_value upload_max_filesize 50M
php_value post_max_size 50M
php_value max_execution_time 300
php_value max_input_time 300

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

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

10- تعطيل الوصول إلى ملف XML-RPC داخل موقع الووردبريس 

ملف Xmlrpc هو أحد الملفات المتواجدة داخل مجلد ملفات الووردبريس على موقعك. وله العديد من الإستخدامات التي ربما تكون نادرة، على سبيل المثال يستخدم عند وجود تطبيقات الطرف الثالث Third-party التي تعمل جنبا إلى جنب مع موقعك. أما إذا لم يكن لديك حاجة إليه، فإن العديد من خبراء الووردبريس ينصحون بتعطيل الوصول إليه. 

ولتعطيل الوصول إلى ملف Xml Rpc يمكنك اضافة الكود التالي داخل ملف htaccess : 

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

11- حظر محاولات الوصول إلى ملفات الكتاب Authors في موقع الووردبريس 

بعض التقنيات الحديثة التي يستخدمها القراصنة، هي محاولة التوصل إلى أسماء الكتاب Authors على موقع الووردبريس، وبالتالي استخدام برامج وتقنيات لمحولة التنبوء بكلمات المرور الخاصة بهم باستخدام اسم المستخدم الخاص بالكتاب. 

ولمنع تلك المحاولات يمكنك اضافة الكود التالي داخل ملف htaccess : 

# BEGIN block author scans
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} (author=\d+) [NC]
RewriteRule .* - [F]
# END block author scans

12- تصميم صفحات الخطأ داخل الموقع 

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

يمكنك تصميم خطأ معينة تحتوي على أي رسالة ولتكن ” عذرا الصفحة هذه غير متوفرة بالموقع” ثم تقوم بتسمية الصفحة هذه بأي أسم وليكن “error404.html” وتقوم بحفظها داخل ملفات موقعك. 

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

ErrorDocument 400 /errors/error400.html

الكود السابق يتكون من جزئين: الأول : ErrorDocument 400 وهي دالة ثابتة تشير إلى نوع الخطأ وهو 404 الذي يظهر في حال عدم توفر صفحة او رابط ما داخل الموقع. والجزء الثاني : /errors/error400.html وهو يشير إلى المسار الذي قمت بحفظ صفحة الخطأ المراد عرضها للزائر به. 

بالمثل يمكنك تخصيص أي صفحة خطأ آخر مثل الخطأ 500 والذي يشير إلى وجود عطل داخل خادم الموقع server error ، يمكنك استخدام الكود التالي داخل ملف htaccess لتخصيص صفحة الخطأ 500 به : 

 ErrorDocument 500 /errors/serverr.html 

بالمثل فإن  ErrorDocument 500 دالة ثابتة تشير إلى نوع الخطأ وهو 500 في هذه الحالة وهو الخطأ الخاص بوجود عطل داخل خادم الموقع. 

كذلك /errors/serverr.html وهو المسار الذي تتواجد فيه صفحة الخطأ التي من المفترض انك قمت بتصميمها ووضعها في هذا المسار داخل مجلدات موقعك. 

ويمكنك استخدام هذه الدالة داخل ملف htaccess لتخصيص صفحات الأخطاء داخل الموقع، واليك قائمة بأهم الأخطاء التي من المحتمل حدوثها :

400 Bad Request
401 Authorization Required
402 Payment Required (not used yet)
403 Forbidden
404 Not Found وهذا الخطأ لعدم توفر الصفحة .
405 Method Not Allowed
406 Not Acceptable (encoding)
407 Proxy Authentication Required
408 Request Timed Out
409 Conflicting Request
410 Gone
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type
400 – Bad Request .. وتعني طلب خاطئ للصفحة
401 – Authorization Required … وتعني انه غير مرخص للزائر بعرض الصفحة
403 – Forbidden .. وتعني انه ممنوع للزائر من دخول الصفحة
404 – File not found … وتعني أن الصفحة التي قام الزائر بطلبها غير موجودة
500 – Internal Server Error وتعني أن هناك خطأ في خادم الموقع
503 – Service Unavailable … وتعني أن الخدمة غير متوفرة

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

ملحوظة: لست مضطرا لتخصيص صفحات لكل تلك الأخطاء الظاهرة أمامك، وخصوصا بأن التحديثات الجديدة للوردبريس أصبحت تقوم بإنشاء صفحات الأخطاء تلك بدون أي تدخل منك.

هل أحتاج بالضرورة الى مبرمج محترف للقيام بتعديل على ملف htaccess ؟ 

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

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

هل يمكن إنشاء أكثر من ملف htaccess للموقع ؟ 

بالتأكيد يمكن إنشاء أكثر من ملف htaccess، حيث في كل مرة تقوم بإنشاء ملف htaccess ورفعة في المكان المخصص له. لكن لاحظ أن الأوامر التي يتم كتابتها داخل الملف يتم تطبيقها على الملفات الأخرى المتواجدة في نفس المكان الذي يوجد فيه الملف، على سبيل المثال إذا قمت بإنشاء ملف htaccess ورفعه إلى مجلد wp-includes فإن الأوامر المتواجدة به سيتم تطبيقها فقط على الملف wp-includes وجميع الملفات المتواجدة بداخله فقط دونا عن باقي ملفات الموقع الأخرى. 

أيضًا لا يمكن إنشاء أكثر من ملف htaccess داخل نفس المسار، وحتى مدير الملفات لن يسمح لك بإنشاء أكثر من ملف بنفس الاسم htaccess، ولكن كما وضحنا بالأعلى فإنه يمكنك إنشاء أكثر من ملف htaccess بحيث يكون كل ملف في مسار مختلف.

ملحوظة: على الرغم من انه مسموح بتعدد ملفات htaccess إلا انه من الأفضل التقليل منها لأنه تتسبب في استهلاك موارد موقعك وزيادة العبء عليها. 

بالنهاية هذه الفكرة العامة من ملف Htaccess والذي ينصحك بمعرفة أهم الوظائف التي يقوم بها الملف، مع تحري الدقة في أثناء تعديله وتحريره.