מאגר המידע הוראות פשוטות לעבודה עם שירות Profitserver
ראשי מאגר המידע הגדרת קובץ .htaccess

הגדרת קובץ .htaccess


במאמר זה, נחקור את העקרונות הבסיסיים של השימוש בקובץ .htaccess, שהוא חיוני לשיפור SEO. קובץ זה מבטיח אינדקס נכון של דפים על ידי מנועי החיפוש. נלמד כיצד לנהל הפניות מחדש, להגדיר אבטחה ולהגביר את הביצועים. בנוסף, נספק טיפים כיצד להגדיר קובץ זה באופן עצמאי.

מדוע יש צורך ב-.htaccess

קובץ ה-.htaccess משמש כמעין "שליטה מרחוק" עבור מפתחי אתרים בשרתי אפאצ'י. הוא מציע כלים נוחים להתאמת פרמטרים שונים וניהול התנהגות של אתר אינטרנט. כאשר גישה ישירה לקבצי התצורה הראשיים של השרת אינה זמינה (כפי שקורה לעתים קרובות באירוח וירטואלי, למשל), .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>

הפניה דומה באמצעות ה- RedirectPermanent ההנחיה נראית כך:

<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>

Direct ErrorDocument

הגדרה זו מאפשרת לך לשלוט במה שהמשתמש יראה כאשר מתרחשות שגיאות HTTP באתר שלך. במקום הודעת השגיאה הרגילה, אתה יכול להציג דף משלך, שיהיה אינפורמטיבי יותר עבור המבקר ויעזור לו להבין מה קרה. פשוט עקוב אחר התחביר הזה לשימוש:

ErrorDocument <error_code> <URL_page>

לדוגמה,

ErrorDocument 404 /errors/not_found.html

אומר שכאשר א 404 מתרחשת שגיאה, הדף ב- /errors/not_found.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 מסכה.

חסימת מבקרים על ידי User-Agent

חסימת משתמשים על ידי User-Agent בקובץ .htaccess היא שיטה לשליטה מי יכול לגשת לשרת האינטרנט שלך על סמך מידע על הדפדפן שבו משתמש המבקר. מחרוזת User-Agent מכילה נתונים על הדפדפן שאדם משתמש בו כדי ליצור אינטראקציה עם השרת שלך, ובזכות מידע זה, אתה יכול להגביל את הגישה למשתמשים מסוימים.

הדרך הנפוצה ביותר לחסום על ידי User-Agent היא להשתמש 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>

בדוגמה זו:

  1. RewriteCond %{HTTP_USER_AGENT} משמש לבדיקת מחרוזת User-Agent.
  2. ^Bot1, ^Bot2, ^Bot3 הן דוגמאות למחרוזות User-Agent שאנו רוצים לחסום. משתני ה-NC מציינים שההשוואה צריכה להיות לא תלוית רישיות.
  3. 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_deflate ו mod_gzip מודולים ב- Apache עוזרים לדחוס מידע שהשרת שולח למכשירים של המשתמשים. זה הופך את הקבצים לקטנים יותר בגודלם, מה שבתורו מאיץ את טעינת הדפים. עם זאת, חשוב לזכור שתמיכה ותצורה של מודולים אלה עשויים להשתנות בהתאם לשרת שלך.

דוגמא לשימוש ב- mod_deflate מודול:

<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 שלך פועל באתר, תוכל לבצע את השלבים הבאים:

  1. שנה בכוונה את קובץ ה-htaccess עם שגיאה. בתגובה, השרת אמור לתת שגיאה. שיטה זו מראה אם ​​פעולת הקובץ מופעלת בדרך כלל על השרת.
  2. בדוק את הפונקציונליות של שינויים ספציפיים שביצעת. לדוגמה, בצע התאמה קלה לאחד הפרמטרים והעריך את נוכחות השינויים.
  3. בדוק את קוד המצב של העמוד אם השינויים קשורים לתגובת השרת. כיצד לעשות זאת, תיארנו בעבר במאמר קודי שגיאה של HTTP: רשימה מלאה של שגיאות שרת.
  4. עיין ביומני השרת. הם מציגים את כל השגיאות הקשורות לפעולת קובץ ה-.htaccess.
  5. ביצוע בדיקות באמצעות שירותים או כלים מקוונים.

חשוב להבין שכדי לבדוק את הפונקציונליות של קובץ ה-.htaccess, אין צורך לבצע את כל השלבים בבת אחת. מספיק לבחור את השיטה המתאימה ביותר מהרשימה ולהשתמש בה.

סיכום

קביעת התצורה של קובץ ה-.htaccess היא שלב חשוב באופטימיזציה והגנה על שרת ה-Apache שלך. בדקנו כיצד קובץ זה עוזר לנהל הפניות מחדש, לדחוס תוכן ולהבטיח אבטחה. ברגע שאתה שולט בעבודה עם .htaccess, אתה מקבל כלי רב עוצמה לשיפור הביצועים והפונקציונליות של אתרי אינטרנט.

❮ מאמר קודם הגדרת שרת FTP
המאמר הבא ❯ כיצד להגדיר שרת אינטרנט (Apache-PHP-MySQL/MariaDB) בלינוקס

שאל אותנו לגבי VPS

אנחנו תמיד מוכנים לענות על שאלותיכם בכל שעה ביום ובלילה.