إذا كنت تملك أو تدير موقع يعمل على خادم Apache فمن الضروري أن تتعرف على الملفات التي تلعب دور كبير في عمله بشكل مستقر. من بين هذه الملفات نجد ملف .htaccess.
ما هو ملف .htaccess؟
ملف .htaccess هو ملف يسمح بإدارة اﻹعدادت على مستوى خادم Apache، بواسطته يمكن إلغاء إعدادات (إذا الخادم يسمح بذلك)، أيضا يسمح لك بتمكين أو تعطيل وظائف وميزات إضافية.
ما الذي أستطيع عمله ب .htaccess
بفضل هذا الملف تستطيع إعداد الخادم لكي يصبح أكثر أمانا، أيضا يمكنك عمل إعادة توجيه، إنشاء رسائل خطأ مخصصة، تقييد الوصول إلى ملفات معينة وأشياء أخرى…
أين أجد ملف .htaccess؟
ووردبريس افتراضيا لا يأتي مصحوب بملف .htaccess ولا يقوم بإنشائه مباشرة بعد التثبيت، بل يتم إنشائه تلقائيا داخل المجلد الرئيسي للموقع عند تغيير او تحديث للروابط الدائمة، الكود ويكون الملف افتراضيا يحتوي على هذه الأوامر.
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
يمكنك إضاقة أي كود تريده بعد # END WordPress أز قبل # BEGIN WordPress وذلك لتفادي خلط الاوامر المخصصة مع الاوامر التي يكتبها ووردبريس افتراضيا على ملف .htaccess، قبل البدء في التعديلات ينصح بعمل نسخة احتياطية للملف.
تحرير ملف .htaccess
كما قلت سابقا عند تفعيل الروابط الدائمة في ووردبريس، يقوم هذا الأخير بإنشاء ملف .hraccess
متكون من شفرات، هذه الشفرات تكون موجودة بين BEGIN WordPress
و END WordPress
. العلامة #
تعني أني أن هذه اﻷسطر هي عبارة عن تعليقات لا تأثير لها على مستوى الإعدادات.
ملف .htaccess
هو ملف حساس وله تأثير كبير على الموقع، وأي خطأ في كتابة الشفرات قد يأدي إلى توقف الموقع بأكمله، لهذا من الضروري عمل نسخة احتياطية للملف قبل البدء في التعديل عليه.
لتحرير ملف .htaccess
يمكنك تحميله بواسطة أي برنامج ftp مثل filezilla أو WinSCP إذا كنت على نظام Microsoft Windows وبعدها فتحه بواسطة محرر النصوص الافتراضي لنظام التشغيل الخاص بك أو أي محرر آخر ك VS Code أو Sublime Text.
كذلك يمكنك تحريره بواسطة خاصية تحرير الملفات المتوفرة في إضافة Yoast SEO, أو تنصيب إضافة متخصصة مثل wp htaccess editor.
حماية ووردبريس بواسطة ملف .htaccess
بالرغم من أن ووردبريس هو برنامج آمن بنسبة كبيرة إلا أنه يُنصح باتخاذ بعض التدابير من أجل الزيادة في مستوى أمان مواقعنا، هناك عدة إضافات حماية تقوم بهذا العمل بشكل شبه تلقائي لكن هنا سنرى كيف يمكننا جعل ووردبريس أكثر أمانا عن طريق إضافة بعض الأوامر إلى ملف .htaccess
.
حماية ملف wp-config.php
ملف wp-config.php
هو واحد من أهم الملفات في ووردبريس, هذا الملف يوجد في نفس الملف الذي يوجد به .htaccess
, أي الملف الرئيسي للموقع، ويحتوي على إعدادات ومعلومات الاتصال بقاعدة البيانات وبعض تفاصيل هذه الأخيرة. هذه المعلومات هي حساسة جدا ووصول طرف ثالث إليها يمكن أن يؤثر على الموقع. أحسن طريقة لحماية هذا الملف هي عبر وضع هذا الكود في ملف htaccess
.
<files wp-config.php>
order allow,deny
deny from all
</files>
wp-config.php
, وبالتالي قد يكون غير متوافق مع بعض الإضافات التي تقوم بالكتابة في هذا الملف تلقائيا (مثل إضافات الكاش وإضافات الحماية)، عليك أن تكون متأكدا من أنك لن تقوم بتنصيب أو تعطيل أية إضافة من هذا النوع قبل إضافة الكود.طبعا يمكنك دائما الوصول إلى الملف وتحريره يدويا عن طريق ftp أو cPanel.
منع الوصول إلى مجلد wp-content
مجلد wp-content يحتوي على صور، قوالب، إضافات… إلخ، هذا يجعله ملف مهم وحساس في ووردبريس لهذا من الضروري حجبه عن المتطفلين ومنع الوصول إليه، لأجل ذلك فقط عليك إنشاء ملف .htaccess جديد داخله ولصق الكود التالي فيه.
# Deny everyone access by default
Order deny,allow
Deny from all
# Allow Images, JS, and CSS
<Files ~ ".(jpe?g|png|gif|css|js)$">
Allow from all
</Files>
هذا الكود يسمح للزوار بمشاهدة الوسائط، ملفات css
. إلخ ويحمي ملفات php.
تعطيل ال TRACE وال TRACK
TRACE وTRACK هي أساليب HTTP, هي وظائف افتراضية لمعظم خوادم الويب Apache تستخدم لغرض تصحيح الأخطاء، مع ذلك هذه الأساليب قد تعرض أمن موقعنا للخطر، لأن هناك هجمات مثل Cross Site Tracing) و Cross Site Scripting, التي بواسطتها يمكن الحصول على الكعكات (Cookies) ومعلومات أخرى حساسة خاصة بالخادم.
لحسن الحظ هذه الأساليب يمكن تعطيلها بسهولة عن طريق إضافة هذا الكود إلى ملف .htaccess
.
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
منع تصفح الملفات
حماية ملفات موقعنا هو أمر جد مهم، لهذا من الضروري إخفائها ومنع تصفحها من طرف أشخاص غير مرخصين، لأجل ذلك فقط قم بإضافة هذا الكود إلى ملف .htaccess.
Options All -Indexes
تعطيل Hotlinking
ال Hotlinking معناه هو، عندما يتم استعمال صور موجودة في خادمك من طرف مواقع أخرى، مما يأدي إلى استنزاف موارده.
يمكنك تجنب ذلك بإضافة هذا الكود إلى ملف .htaccess
.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?saidelballai.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?bing.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|svg)$ http://dropbox.com/hotlink-placeholder.jpg [NC,R,L]
فقط عليك تغيير رابط الصورة، هذه الأخيرة يمكنك أن تستعملها لوضع رسالة تعلن فيها أن ال Hotlinking غير مسموح في موقعك.
منع وصول عناوين IP معينة
إذا كنت تستعمل أحد الإضافات التي تعلمك بمحاولات تسجيل الدخول الفاشلة التي يتعرض لها موقعك، يمكنك منع عناوين IP التي تمت منها تلك المحاولات من الوصول إلى الموقع بواسطة وضع هذا الكود في ملف .htaccess
.
order allow,deny
deny from xxx.xxx.xx.x
allow from all
هكذا مثلا:
<Limit GET POST>
order allow,deny
deny from xxx.xxx.xx.x
deny from xxx.xxx.xx.xxx
deny from xxx.xxx.xxx.xxx
allow from all
</Limit>
يمكنك أيضا أن تقوم بالعكس، أي منع الموقع على الكل وفقط السماح بالوصول إلية لعنوان أو عناوين IP معينة وذلك باستعمال هذا الكود
<Limit GET POST>
order allow,deny
allow from xxx.xxx.xx.x
deny from all
</Limit>
حماية ملف .htaccess
إذا لم تقم بحماية ملف .htaccess نفسه، هذا الأخير يمكن أن يتم استعماله بطريقة سيئة من أطراف أخرى… قد يقومون من خلاله بتعطيل إعدادات الحماية للخادم مثلا.
لحماية ملف .htaccess
فقط عليك وضع هذا الكود داخل الملف نفسه.
order allow,deny
deny from all
استعمال ملف .htaccess لتحسين أداء وأرشفة الموقع
يمكن استعمال ملف .htaccess
لتحسن أداء وأرشفة الموقع وذلك بتفعيل بعض الوظائف مثل إعادة توجيه الروابط 301, إضافة أو حذف www من رابط الموقع، تفعيل كاش المتصفح والضغط zip… إلخ
تمكين كاش المتصفح
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 year"
# Data interchange
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
# Favicon (cannot be renamed!)
ExpiresByType image/x-icon "access plus 1 week"
# HTML components (HTCs)
ExpiresByType text/x-component "access plus 1 month"
# HTML
ExpiresByType text/html "access plus 0 seconds"
# JavaScript
ExpiresByType application/javascript "access plus 1 year"
# Manifest files
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Media
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# Web feeds
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
# Web fonts
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
</IfModule>
تمكين ضغط zip
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>
عمل إعادة توجيه من نطاق إلى آخر
هذا الكود يمكنك استعماله في حالة تغيير نطاق الموقع، بحيث تقوم بوضعه في ملف .htaccess الخاص بالنطاق القديم ليقوم بعمل إعادة توجيه للنطاق الجديد
RewriteEngine On
RewriteCond %{HTTP_HOST} !^old-domain.com [NC]
RewriteRule (.*) http://new-domain.com/$1 [R=301,L]
مكافحة السبام بإستعمال ملف .htaccess
التعاليق المزعجة أو ما يعرف بالسبام هو مشكل يعاني منه كل مديري المواقع في العالم، هذا النوع من التعليقات يؤثر سلبيا على سرعة الموقع وأمانه، في ووردبريس يوجد العديد من الإضافات التي تقوم بمكافحة هذا النوع من التعليقات، لكن إذا كنت لا تحب الإكثار من تنصيب الإضافات يمكنك مكافحتها فقط بإضافة هذا الكود إلى ملف .htaccess
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post.php*
RewriteCond %{HTTP_REFERER} !.*your_site.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
حذف أو إضافة www إلى الرابط
إذا لاحظت، هناك بعض المواقع يبدأ نطاقها ب www كقوقل وفايسبوك مثلا وفي مواقع أخرى يظهر النطاق دونها كما هو الحال في الموقع الرسمي لووردبريس, حتى اليوم لم أرى أحداً يقول إن هذا الاختيار أفضل أم الآخر أفضل أحسن، كل ما في الأمر هو مسألة اختيار فقط.
إذا كان نطاقك يظهر ب www وتريد إزالتها قم بوضع هذا الكود في ملف .htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.your_site.com [NC]
RewriteRule ^(.*)$ http://your_site.com/$1 [L,R=301]
إذا كنت تريد القيام بالعكس قم بوضع هذا الكود في ملف htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^your_site.com [NC]
RewriteRule ^(.*)$ http://www.your_site.com/$1 [L,R=301]
إعادة توجيه رابط التغدية (feed) إلى FeedBurner
هناك عدة إضافات تقوم بإعادة توجيه رابط التغذية إلى FeedBurner لكن يمكنك عمل نفس الشيء فقط بوضع هذا الكود في ملف .htaccess
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ https://feeds.feedburner.com/saidelbakkali [R=302,NC,L]
في هذه التدوينة قمنا بالتعرف على ملف .htaccess
وبعد الإعدادات التي يمكننا القيام بها لتأمين بعض الملفات الحساسة وتحسين أداء الموقع، مع العلم أن عدد الإعدادات التي يمكن القيام بها في هذا الملف لا حدود لها.
أتمنا أن يكون قد اعجبك الموضوع، إذا كانت تستعمل في موقعك إعدادات لم أقم بذكرها لا تتردد عن مشاركتها معنا من خلال التعليقات.
محمد عكفي قال
الله يسعدك استاذي سعيد موضوع في قمة الأهمية ويحتاج إليه الكثير من المدونين والكُتّاب في عالم ووردبريس أيضاً المطورين بشكل أخص ..
هنالك سؤال طرحه الكثير من الناس وهو : هل هنالك طريقة لتغير تركيبة الروابط الدائمة من خلال [code lang=”apacheconf” inline=true].htaccess[/code] ليصبح الرابط منتهي بـ html على سبيل المثال :
في المقالات :
[code lang=”none” inline=true]http://www.domin.com/testpost.html[/code]
في صفحة الكاتب :
[code lang=”none” inline=true]http://www.domin.com/author/admin.html[/code]
وفي صفحة الأرشيفات :
[code lang=”none” inline=true]http://www.domin.com/category/test.html[/code]
بشكل عام جعل التركيبة تنتهي بـ html ..
هنالك إضافات متخصصة بذلك وقد قمت بتجربتها وهي ناجحة ولكن هل هنالك آلية يتم عملها بواسطة هذا الملف الذي يقدم خدمات كثيرة ؟
تحياتي وتقديري لك استاذي سعيد .
Khader قال
شكرا جزيلا على المقالة الرائعة .. ونتمنى منك المزيد
سعيد البقالي قال
العفو أخي، الشكر لك على المرور، إن شاء الله سيكون هناك الكثير من المقالات المفيدة كل اسبوع.
شاهين قال
يا اخي سعيد الله يسعدك في الدنيا والاخرة. والله موضوع في مستوى عالي من الاحترافية والشمولية وايضا عن موضوع “ملف .htaccess ” قليلا ما نجد بعض الافكار عنه. فالله يزيدك علم على علم. بالتوفيق.
عبدالله حداد قال
مرحبا اخي سعيد ..
انت متميز للغاية في مواضيعك شكرا لك
لدي سؤال ..هل يمكنك تجميع أهم هذه الاعدادات في ملف واحد وارفاقه في مقالك؟
يزيد نشاد قال
بارك الله فيك أخي الفاضل، مقالة رائعة جداً، جزاك الله خيراً
سعيد البقالي قال
الله يجازيك أخي، شكرا على مرورك و على التعليق المشجّع
دليل الجبيل قال
الله يعطيك الف الف عافيه
موقع ثري بالمعلومات الله يرحم والديك
سعيد البقالي قال
شكرا لك عزيزي، الله يرحم المسلمين أجمعين.
Egy قال
أين أجد ملف .htaccess على منصة الوردبريس ؟
سعيد البقالي قال
إذا كنت تقصد منصة wordpress.com فللأسف لا يمكنك الوصول لملف .htaccess، أما إذا منت تستخدم نظام إدارة المحتوى ووردبريس على استضافتك الخاصة فيمكنك الوصول إليه عبر cPanel، عن طريق ال FTP.
بالتوفيق.
عهود قال
شكرا لك موضوع جميل ولكن كيف أظهر ملف
htaccess.
مرة أخرى بعد إضافة هذا الكودلأنني وضعت هذا الكود ولم أستطع إظهاره مرة أخرى
سعيد البقالي قال
السلام عليكم، الملفات المسبوق بنقطة في أنظمة Linux تكون مخفية ويجب عليك إظهارها، هل قمت بالتعديل على [code lang=”php” inline=”true”].htaccess[/code] عن طريق cPanel أم عن طريق ftp بإستعال أحد البرامج كـ Filezilla أو Winscp؟ في جميع الحالات هناك إعدادات لعرض الملفات والمجلدات المخفية خاصة بكل برنامج.
محمد ابو السعود قال
السلام عليكم ورحمة الله وبركاته
أشكرك بشدة شديدة جدا وجزاك الله خير الجزاء على هذه المقالة كان عندى مشكلة ف الموقع شغال فيه والحمد لله اتحلت بسبب معلوماتك القيمة عن ملف .htaccess
شكرا جزيراً
mustafa elyan قال
بارك الله فيك و فى من تحب و جعله فى ميزان حسناتك
عمر قال
انتا انسان اروع من الرائع
موضوع جميل ومهم في نفس الوقت
في اللحظه التي كنت اقرأ فيها مقالتك انت وفرت عليا تركيب تقريبا ٣اضافات ووردبريس
والتي تسبب ثقل في الموقع غالباً بسبب الملفات المتكرره
اشكرك عزيزي وواصل تميزك
سعيد البقالي قال
شكر لك على الكلمات الطيبة أخي عمر 😀