في هذه المقالة، سنتناول المبادئ الأساسية لاستخدام ملف .htaccess، وهو ضروري لتحسين محركات البحث (SEO). يضمن هذا الملف فهرسة الصفحات بشكل صحيح بواسطة محركات البحث. سنتعلم كيفية إدارة عمليات إعادة التوجيه، وضبط الأمان، وتحسين الأداء. بالإضافة إلى ذلك، سنقدم نصائح حول كيفية ضبط هذا الملف بشكل مستقل.
لماذا هناك حاجة إلى .htaccess
يُعد ملف .htaccess بمثابة "جهاز تحكم عن بُعد" لمطوري الويب على خوادم Apache. فهو يوفر أدوات سهلة الاستخدام لضبط مختلف المعلمات وإدارة سلوك الموقع الإلكتروني. عند عدم توفر الوصول المباشر إلى ملفات التكوين الرئيسية للخادم (كما هو الحال غالبًا في الاستضافة الافتراضية، على سبيل المثال)، يُصبح ملف .htaccess أداة مفيدة لإجراء التغييرات اللازمة.
غالبًا ما يوجد ملف Htaccess في المجلد الجذر لموقعك أو في المجلدات التي تتطلب تهيئة خاصة. على سبيل المثال، إذا كنت تستخدم ووردبريس، يمكنك إجراء التهيئة باستخدام إضافة Yoast SEO، والتي ناقشناها في مقالنا. تكوين ملف robots.txt. في حالات أخرى، يكفي الذهاب إلى المجلد المطلوب وتحرير ملف .htaccess الموجود، أو إنشائه إذا لم يتم إنشاؤه بعد.
تكوين ملف .htaccess
301 إعادة توجيه htaccess
يمكن تشبيه إعادة التوجيه 301 في ملف .htaccess بإعادة التوجيه الدائمة لموقع ويب. فهي تُعلم محركات البحث والمتصفحات بأن الصفحة أصبحت الآن في عنوان جديد بشكل دائم، وتقترح تحديث الإشارات المرجعية والفهرسة. تُستخدم إعادة التوجيه هذه عادةً عند نقل الصفحة أو حذفها للحفاظ على ترتيبها في نتائج البحث وإعادة توجيه الزوار إلى الموقع الجديد.
لتنشيط عمليات إعادة التوجيه، تحتاج إلى تمكين الأمر المقابل في ملف .htaccess:
RewriteEngine on
بعد ذلك، يمكنك تكوين أبسط شكل لإعادة التوجيه:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>
إعادة توجيه مماثلة باستخدام إعادة التوجيه الدائم يبدو التوجيه على هذا النحو:
<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>
هذه هي أسهل طرق إعادة التوجيه للتكوين. لنأخذ تكوينًا يستخدم أنواعًا أخرى أكثر تقدمًا من عمليات إعادة التوجيه مع mod_rewrite وحدة:
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirecting from one page to another
RewriteRule ^old-page.html$ http://www.example.com/new-page.html [R=301,L]
# Redirecting all traffic from one domain to another
RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
# Redirecting from www to non-www (or vice versa)
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
# Redirecting from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# Redirecting from one subdomain to another
RewriteCond %{HTTP_HOST} ^subdomain1.example.com$
RewriteRule ^(.*)$ http://subdomain2.example.com/$1 [R=301,L]
</IfModule>
إعادة توجيه 302 لملف .htaccess، الذي يشير إلى نقل مؤقت، أقل شيوعًا. إليك مثال على هذا الإعداد:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>
مستند خطأ التوجيه
يتيح لك هذا الإعداد التحكم بما يراه المستخدم عند حدوث أخطاء HTTP على موقعك. بدلاً من رسالة الخطأ القياسية، يمكنك عرض صفحتك الخاصة، والتي ستكون أكثر إفادة للزائر وتساعده على فهم ما حدث. ما عليك سوى اتباع هذه الصيغة للاستخدام:
ErrorDocument <error_code> <URL_page>
على سبيل المثال،
ErrorDocument 404 /errors/not_found.html
يعني أنه عندما 404 يحدث خطأ، الصفحة في /الأخطاء/لم يتم العثور عليها.html سيتم فتحه. يتم تحديد عناوين URL المطلقة بشكل مشابه:
ErrorDocument 500 http://example.com/errors/server_error.html
يشير هذا المثال إلى عرض server_error.html صفحة في http://example.com/errors/ في حالة وجود 500 خطأ.
رفض الوصول إلى دليل الموقع
ملف .htaccess يحتوي على الأمر نفي من جميع، مما يساعد على منع الوصول إلى مجلدات أو ملفات معينة على خادم الويب الخاص بك. قد يكون هذا مفيدًا إذا كنت ترغب في إخفاء معلومات خاصة أو ملفات مهمة عن زوار الموقع لضمان أمان البيانات.
لتعطيل القائمة (عرض جميع الدلائل المتاحة)، تحتاج إلى إضافة السطر:
Options -Indexes
يبدو مثال على حظر الوصول إلى دليل معين على النحو التالي:
<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>
وبالمثل، يمكنك رفض الوصول إلى ملف واحد:
<Files "file.php">
Order Deny,Allow
Deny from all
</Files>
أو لمجموعة من الملفات حسب الامتداد:
<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>
حظر الوصول عن طريق IP
حظر الوصول عبر عنوان IP في ملف .htaccess هو طريقة تسمح لك بتقييد الوصول إلى موقعك الإلكتروني لعناوين IP محددة أو مجموعاتها. قد يكون هذا مفيدًا إذا كنت ترغب في منع وصول أشخاص معينين أو برامج روبوت غير مرغوب فيها إلى موقعك أو أجزائه المحددة.
يتم حظر عنوان IP واحد باستخدام الأمر:
Order Deny,Allow
Allow from all
Deny from 11.22.33.44
يتم حظر العديد من عناوين IP بطريقة مماثلة عن طريق تكرار "نفي من"السطر مع العناوين المطلوبة.
لحظر مجموعة من عناوين IP:
Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24
للسماح بالوصول لعناوين IP محددة فقط، أضف الكود:
Order Deny,Allow
Deny from all
Allow from 11.22.33.44
لرفض الوصول بشكل كامل، استخدم التوجيه نفي من جميع، ولحظر العناوين بواسطة القناع، حدد تنكر من 11.22.
أين، 11.22 هو عنوان IP قناع.
حظر الزوار بواسطة وكيل المستخدم
حظر المستخدمين باستخدام وكيل المستخدم في ملف .htaccess هو طريقة للتحكم في من يمكنه الوصول إلى خادم الويب الخاص بك بناءً على معلومات حول المتصفح الذي يستخدمه الزائر. تحتوي سلسلة وكيل المستخدم على بيانات حول المتصفح الذي يستخدمه الشخص للتفاعل مع خادمك، وبفضل هذه المعلومات، يمكنك تقييد وصول مستخدمين معينين.
الطريقة الأكثر شيوعًا للحظر بواسطة وكيل المستخدم هي استخدام mod_rewrite:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3 [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>
في هذا المثال:
- يتم استخدام RewriteCond %{HTTP_USER_AGENT} للتحقق من سلسلة User-Agent.
- ^Bot1، ^Bot2، ^Bot3 أمثلة على سلاسل وكيل المستخدم التي نريد حظرها. تشير مُعدِّلات NC إلى أن المقارنة يجب ألا تُراعي حالة الأحرف.
- RewriteRule ^.*$ - [F,L] ينطبق على الطلب في حال استيفاء أيٍّ من شروط RewriteCond. يُرسل استجابةً برمز حالة 403 المحظور (F) ويوقف معالجة القواعد (L).
التخزين المؤقت في htaccess
يُساعد إعداد التخزين المؤقت عبر ملف .htaccess على تسريع موقعك الإلكتروني من خلال زيادة سرعة تحميله للمستخدمين. يعمل هذا الإعداد كالتالي: تُخزَّن ملفات معينة، مثل الصور وأنماط CSS ونصوص JavaScript، في ذاكرة التخزين المؤقت لمتصفح المستخدم بعد أول تحميل. الآن، يستطيع المتصفح استخدام هذه الملفات من ذاكرة التخزين المؤقت، بدلاً من إعادة تحميلها من الخادم في كل مرة يزور فيها المستخدم صفحة. هذا يُقلل من وقت التحميل ويُحسِّن أداء الموقع.
فكر في مثال:
# Enable caching for images for 1 month
<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
# Enable caching for CSS and JavaScript for 1 week
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
من ناحية أخرى، بالنسبة للموارد التي يتم تحديثها بشكل متكرر، فمن الضروري تعطيل التخزين المؤقت:
# Excluding caching for HTML pages and XML files
<FilesMatch "\.(html|xml)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>
تحسين أداء الموقع
استخدم تعديل_انكماش و mod_gzip تساعد وحدات Apache على ضغط المعلومات التي يرسلها الخادم إلى أجهزة المستخدمين. هذا يُصغّر حجم الملفات، مما يُسرّع تحميل الصفحات. مع ذلك، من المهم تذكّر أن دعم هذه الوحدات وتكوينها قد يختلف باختلاف خادمك.
مثال على استخدام تعديل_انكماش وحدة:
<IfModule mod_deflate.c>
# Compressing text file types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
مثال على mod_gzip:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ # Enabling compression for files with extensions .html, .txt, .css, .js, .php, .pl
mod_gzip_item_include mime ^application/x-javascript.* # Enabling compression for MIME types starting with application/x-javascript
mod_gzip_item_include mime ^text/.* # Enabling compression for MIME types starting with text/
mod_gzip_item_exclude mime ^image/.* # Excluding from compression MIME types starting with image/
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* # Excluding already compressed data (responses with the Content-Encoding: gzip header)
</IfModule>
لقد ناقشنا التوجيهات الأكثر استخدامًا. يمكنك التعرف على جميع إمكانيات الملف في وثائق رسمية.
كيفية التحقق من وظيفة ملف .htaccess
للتحقق مما إذا كان ملف .htaccess الخاص بك يعمل على الموقع، يمكنك تنفيذ الخطوات التالية:
- تغيير ملف .htaccess عمدًا مع وجود خطأ. ردًا على ذلك، يُفترض أن يُظهر الخادم خطأً. توضح هذه الطريقة ما إذا كان تشغيل الملف مُطبقًا بشكل عام على الخادم.
- تحقق من فعالية التغييرات التي أجريتها. على سبيل المثال، قم بإجراء تعديل بسيط على أحد المعلمات وقيّم وجود أي تغييرات.
- تحقق من رمز حالة الصفحة إذا كانت التغييرات مرتبطة باستجابة الخادم. كيفية القيام بذلك، كما شرحنا سابقًا في المقالة. رموز خطأ HTTP: قائمة كاملة بأخطاء الخادم.
- راجع سجلات الخادم. فهي تعرض جميع الأخطاء المتعلقة بتشغيل ملف .htaccess.
- إجراء الاختبار باستخدام الخدمات أو الأدوات عبر الإنترنت.
من المهم أن تفهم أنه للتحقق من فعالية ملف .htaccess، ليس عليك تنفيذ جميع الخطوات دفعةً واحدة. يكفي اختيار الطريقة الأنسب من القائمة واستخدامها.
خاتمة
يُعدّ تهيئة ملف .htaccess خطوةً مهمةً في تحسين وحماية خادم Apache. لقد استكشفنا كيف يُساعد هذا الملف في إدارة عمليات إعادة التوجيه، وضغط المحتوى، وضمان الأمان. بمجرد إتقانك استخدام .htaccess، ستحصل على أداة فعّالة لتحسين أداء مواقع الويب ووظائفها.