השעה הגרועה ביותר של העברת אתר שעשיתי אי פעם בילתה בבהייה בשגיאה של 500 באתר חי, והסיבה הייתה תו תועה בודד בקובץ.htaccess. כתבתי ביד אצווה של הפניות מחדש לבנייה מחדש של וורדפרס, דגל RewriteRule עם אצבעות שמנות, ואפאצ'י הגיב בסירוב לשרת את כל הדומיין ההפניות עצמן היו בסדר; התחביר סביבם לא היה, ו.htaccess לא סלחן ככה. אחרי זה הפסקתי לכתוב כללי הפניה ביד והתחלתי לייצר אותם, וזה בדיוק מה ש מחולל הפניה מחדש של htaccess על Toolz.dev עושה.מדריך זה מכסה כיצד Apache redirects לעבוד, מתי להשתמש בכל סוג, וכיצד canonicalize HTTPS ו www מבלי לשבור שום דבר.
TL;DR: קובץ.htaccess אומר ל-Apache כיצד להפנות כתובות URL. השתמש ב-301 עבור מהלכים קבועים, ב-302 עבור זמניים,
Redirectלשבילים מדויקים, וRewriteRuleלדפוסים. ה מחולל הפניה מחדש של htaccess בונה את כל אלה בתוספת כוח-HTTPS וחוקי www מתוך רשימה פשוטה, מסודרת כהלכה, כולה בדפדפן שלך בלי שום דבר שהועלה.
מהו מחולל htaccess redirect?
מחולל הפניות מחדש של.htaccess הופך רשימה פשוטה של מיפויי כתובות URL ישנים לחדשים להנחיות המדויקות של Apache המבצעות את ההפניות מחדש. איזה קוד סטטוס תבחר הוא שאלת פרוטוקול, לא שאלת Apache: RFC 9110 מגדיר את 301 כקבוע ו-302 כפי שנמצא. קובץ ה-.htaccess הוא קובץ תצורה לכל ספרייה ש-Apache קורא בכל בקשה, ובאירוח משותף זה בדרך כלל המקום היחיד שבו אתה יכול להכריז על הפניות מחדש, מכיוון שאינך יכול לערוך את תצורת השרת הראשי. המחולל כותב את שני הטעמים של הפניה מחדש ש-Apache תומך: ה-mod_alias Redirect הנחיה לשינויי נתיב פשוטים אחד לאחד, וה-mod_rewrite RewriteRule הנחיה להתאמות דפוסים שתופסים כתובות אתרים רבות בבת אחת.
הסיבה ליצור את אלה במקום להקליד אותם היא שתחביר.htaccess הוא מדויק ומעניש. דגל שלא במקום, נקודה שלא נמלטה בתבנית, או כלל בסדר הלא נכון לא מייצר אזהרה; הוא מייצר שגיאה של 500 שמורידה את כל האתר עד שתמצא ותתקן אותו. ההנחיות צריכות להופיע גם בסדר מסוים, כאשר מנוע השכתוב מופעל לפני כל RewriteRule, וכללים ברחבי האתר לפני אלה ברמת העמוד, או שהם מתנהגים בצורה לא נכונה בדרכים שקשה לנפות באגים. גנרטור מקודד את הסדר והתחביר הזה כך שלא תוכל לטעות בעדינות.
על Toolz.dev הזרימה משקפת איך אתה באמת חושב על הגירה אתה מפרט כל נתיב ישן והיעד החדש שלו, בוחר אם המהלך הוא קבוע או זמני והאם הוא נתיב מדויק או דפוס, ובאופן אופציונלי לעבור על שני כללי האתר רחב כמעט כל אתר צריך הכלי מרכיב את כל הקובץ בסדר הנכון ומסמן כל דבר חשוד, כגון כלל שמפנה נתיב לעצמו, לפני שאתה להדביק אותו לתוך האתר שלך.
מה ההבדל בין הפניה 301 ל-302?
A 301 הוא הפניה קבועה ו-302 הוא זמני, ולמנוע חיפוש ההבחנה היא כל העניין. A 301 אומר לדפדפנים ולסורקים שהדף זז לתמיד, ומנועי חיפוש מגיבים על ידי העברת כמעט כל ה-URL ' הישנים; אותות דירוג מצטברים לכתובת החדשה ובסופו של דבר מורידים את כתובת האתר הישנה מהאינדקס שלהם. A 302 אומר להם שהמהלך הוא זמני, אז הם שומרים על כתובת האתר המקורית באינדקס ומדורגת ומתייחסים ליעד כאל סטנד-אין שיעלם.
לבחירה הלא נכונה יש השלכות אמיתיות השתמש ב-302 עבור מהלך קבוע ומנועי חיפוש עשויים לשמור על דירוג כתובת האתר הישנה בזמן שהדף החדש שלך נאבק לצבור סמכות משלו, מכיוון שהאותות מעולם לא הועברו השתמש ב-301 עבור משהו זמני באמת, כמו דף מושבת לצורך תחזוקה או דף נחיתה עונתי, ואתה עלול לאבד לצמיתות את הדירוג של המקור ברגע שהמצב יחזור כלל האצבע הוא פשוט: אם כתובת האתר הישנה לעולם לא תחזור, השתמש ב-301; אם כן, השתמש ב-302.
הנה איך השניים משווים על המאפיינים החשובים:
| נכס | 301 קבוע | 302 זמני |
|---|---|---|
| משמעות | פייג' זז לתמיד | פייג' נמצא באופן זמני במקום אחר |
| דירוג אותות | הועבר לכתובת האתר החדשה | הישאר עם כתובת האתר המקורית |
| כתובת URL ישנה באינדקס | בסופו של דבר ירד | נשמר |
| שימוש אופייני | עיצובים מחדש, הגירות, דפים ממוזגים | תחזוקה, בדיקות א/ב, דפים עונתיים |
| אחסון במטמון בדפדפן | שמור באגרסיביות | לא נשמר במטמון כברירת מחדל |
המחולל מאפשר לך להגדיר את המצב לפי כלל, כך שהעברה שהיא בעיקר מהלכים קבועים עם הפניה זמנית אחת לקידום מכירות היא רשימה מעורבת אחת ולא שני קבצים. מכיוון ש-301s מאוחסנים במטמון באגרסיביות על ידי דפדפנים, כדאי לתקן אותם בפעם הראשונה; 301 שגוי יכול להימשך בדפדפן visitor's הרבה אחרי שתתקן את השרת.
מתי עלי להשתמש בהפניה מחדש לעומת כתיבה מחדש?
השתמש ב Redirect הנחיה לשינוי נתיב מדויק, אחד לאחד, וא RewriteRule כאשר אתה צריך להתאים דפוס. Redirect 301 /old-page /new-page האם הכלל כולו להעברת עמוד בודד, והוא קריא, קשה לטעות, ומטופל על ידי Apache's mod_alias module. כשיש לך קומץ דפים ספציפיים שכל אחד מהם עבר למיקום חדש ספציפי, רשימה של Redirect קווים היא הדרך הברורה והבטוחה ביותר לבטא אותה.
א RewriteRule מרוויח את המורכבות שלו כאשר כלל אחד צריך לתפוס כתובות אתרים רבות. אם כל פוסט תחת /blog/2023/ עבר לאותו נתיב ללא השנה, כותב א Redirect שורה עבור כל פוסט תהיה מאות כללים; יחיד RewriteRule ^blog/2023/(.*)$ /blog/$1 [R=301,L] מטפל בכולם על ידי לכידת החלק לאחר השנה ושימוש חוזר בו ביעד הכוח מגיע מביטויים רגולריים וקבוצות לכידה, אבל כך גם הסיכון, כי דמות מיוחדת שלא נמלטה או דפוס חמדני יכולים להתאים להרבה יותר ממה שהתכוונת.
המחולל בוחר את ההנחיה המתאימה לך בהתבסס על סוג ההתאמה שתבחר לפי כלל: כללים מדויקים הופכים Redirect קווים וכללי דפוס הופכים RewriteRule קווים, כאשר מנוע השכתוב מופעל אוטומטית כאשר קיים כלל דפוס כלשהו. זה גם שומר על שתי הקבוצות בסדר הנכון בפלט. אם אתה חדש בכתיבת התבניות עצמן, ה בודק regex מאפשר לך לבדוק דפוס מול כתובות URL לדוגמה לפני שאתה סומך עליו בהפניה מחדש, וכך אני מאשר שקבוצת לכידה עושה את מה שאני מצפה.
כיצד אוכל לאלץ HTTPS ב-htaccess?
כדי לאלץ HTTPS, אתה מוסיף תנאי שכתוב שבודק אם הבקשה הנוכחית אינה מאובטחת כבר, ואחריו כלל המפנה לגרסת https של אותו מארח ונתיב. הטופס הסטנדרטי בודק %{HTTPS} off ואז משכתב ל https://%{HTTP_HOST}/$1 עם 301, כך שכל בקשה רגילה-HTTP משודרגת לצמיתות לגרסה המוצפנת של כתובת האתר הזהה. שירות אתר על גבי http ו-https ללא הפניה מחדש זה אומר שמנועי חיפוש יכולים להוסיף לאינדקס שתי גרסאות של כל עמוד, ולפצל את אותות הדירוג שלך ביניהן.
העדינות היא סדר כלל HTTPS צריך לרוץ לפני כל מארח שכתוב מחדש, כגון הוספה או הסרה של www, כך שאותם כללים מאוחרים יותר נוחתים גם על הסכימה המאובטחת במקום לשלוח מבקר מ-http ל-https ולאחר מכן דרך הפניה שנייה. לטעות זה מייצר שרשראות הפניה מחדש, שבהן בקשה בודדת קופצת דרך שתיים או שלוש דילוגים לפני ההגעה, וזה איטי יותר עבור המשתמשים ומדלל את יתרון הדירוג של ההפניה מחדש המחולל מציב את כלל ה-HTTPS ראשון בדיוק מסיבה זו.
הפעל את Force HTTPS בכלי והוא מכניס את התנאי והכלל הנכונים בחלק העליון של הפלט, לפני הפניות הדפים שלך וכלל www. מכיוון ש-HTTPS הוא כעת ציפייה בסיסית ולא תוספת אופציונלית, ודפדפנים מסמנים יותר ויותר דפי http רגילים כלא מאובטחים, זהו כלל שאני מוסיף למעשה לכל אתר. זה משתלב באופן טבעי עם כלל המארח הקנוני המכוסה הבא, ויחד הם מיישבים אתר בכתובת אחת בדיוק לכל עמוד.
איך אני מפנה את www ללא www או להיפך?
אתה canonicalize את הקידומת www עם כלל שכתוב שבודק את המארח ומפנה לגרסה שבחרת. כדי להסיר את www, אתה מתאים מארחים שמתחילים ב www., ללכוד את השאר, ולהפנות לדומיין החשוף; כדי להוסיף www, אתה מתאים למארחים שלא מתחילים איתם www. והפנה לגרסה המקדימה כך או כך, המטרה היא שכל עמוד יהיה נגיש בדיוק אצל מארח קנוני אחד, כי משרת את אותו תוכן בשניהם www.example.com ו example.com היא בעיה קלאסית של תוכן כפול המפצלת אותות דירוג בדיוק כפי שעושה פיצול http/https לא פתור.
אין יתרון SEO ל-www על פני non-www או הפוך; מה שחשוב הוא שתבחר אחד ותאכוף אותו באופן עקבי אתרים גדולים בשימוש היסטורי ב-www מסיבות טכניות סביב קובצי Cookie ותת-דומיינים, בעוד שאתרים מודרניים רבים מפילים אותו לקיצור הדבר החשוב הוא שברגע שתבחר, כל קישור, כל תג קנוני וכל נקודות הפניה מחדש באותה גרסה, כך שמנועי החיפוש מאחדים את כל הסמכות שלך על מארח אחד במקום לחלק אותו.
המחולל מציע הגדרת www בודדת עם שלוש אפשרויות: השאר אותה ללא שינוי, כפה על www או הסר www.הוא כותב את התנאי והכלל התואמים וממקם אותו אחרי כלל ה-HTTPS כך שהשניים ישתפו פעולה ולא ישרשרו. איזה מארח שאתה מתמקם בו צריך להיות גם זה בתגים הקנוניים שלך ובמפת האתר שלך, אז כדאי ליצור את שלך מפת אתר עם אותו מארח קנוני והכרזה על כללי הזחילה שלך בהתאמה robots.txt. עקביות בין שלושתם היא מה שגורם לקנוניזציה להידבק בפועל.
האם ההפניות הללו עובדות על nginx?
מס 'פורמט.htaccess הוא ספציפי לשרת האינטרנט Apache והשרתים המחקים אותו בכוונה, בעיקר LiteSpeed. Nginx אינו קורא קבצי.htaccess כלל; הוא מתעלם מהם לחלוטין, כך שהדבקת הנחיות Apache בהגדרת Nginx לא עושה דבר. Nginx מטפל בהפניות מחדש עם שלה return ו rewrite הנחיות בפנים server ו location בלוקים בתצורה הראשית, תוך שימוש בתחביר שונה ובמודל הערכה שונה.
זה משנה כי מספר מפתיע של בעיות הפניה מחדש מגיעות מהחלת הכלל הנכון על השרת הלא נכון אם נראה שמתעלמים מההפניות שלך לא משנה מה אתה כותב, הדבר הראשון שיש לבדוק הוא איזה שרת אינטרנט משרת את האתר שלך בפועל, כי קובץ.htaccess על מארח Nginx הוא אינרטי מארחי וורדפרס מנוהלים בפרט לפעמים מריצים את Nginx מול או במקום Apache, ושם לקובץ.htaccess שערכת בקפידה אין השפעה.
המחולל מייצר תחביר אפאצ'י, המכסה את הרוב הגדול של אירוח משותף וכל מארח המריץ אפאצ'י או LiteSpeed אם אתה על Nginx, ההיגיון של הכללים מתרגם ישירות, הפניה קבועה היא עדיין 301 ומארח קנוני הוא עדיין מארח קנוני, אבל התחביר חייב להיכתב מחדש עבור Nginx's הנחיות, שהיא עבודה עבור המארח שלך's תצורה ולא קובץ.htaccess. לדעת באיזה שרת אתה נמצא לפני שתתחיל חוסך את הבלבול שצפיתי בו בולע אחר הצהריים שלמים.
מתי באמת אשתמש בזה?
העברות אתרים הן המקרה העיקרי בכל פעם שאני בונה מחדש אתר, בין אם זה פרויקט וורדפרס שעובר למבני כתובת URL חדשים או מבנה חדש המחליף אתר ישן, כל כתובת URL ישנה שהייתה לה תעבורה או קישורים נכנסים צריכה 301 לבית החדש שלה, או שהתנועה והסמכות מתאדים לתוך 404s. רישום המיפויים הללו ויצירת בלוק ההפניה מחדש במעבר אחד, מסודר נכון ונקי תחבירית, בטוחים בהרבה מעריכה ידנית של קובץ שיכול להוריד את האתר על שגיאת הקלדה אחת. כללי הדפוס מטפלים בקטעים שלמים שעברו כקבוצה.
אכיפת HTTPS ומארח קנוני הוא המקרה היומיומי אפילו באתר ללא הפניות מחדש ברמת הדף, כדאי להוסיף את חוקי הכוח-HTTPS ו-www כדי לאחד את אותות הדירוג ולעמוד בדפדפני הבסיס האבטחה הצפויים כעת. אני מייצר את שני הכללים האלה בעצם לכל אתר חדש ומדביק אותם לפני ההשקה, כך שהאתר קנוני מהיום הראשון במקום לנקות אותו מאוחר יותר ברגע שכבר נוספו גרסאות כפולות לאינדקס.
ניקוי לאחר העובדה מסיימת את זה החוצה הפניות ישנות מצטברות, כמה שרשרת דרך שתיים או שלוש כשות, וכמה נקודה על דפים שמאז עברו שוב מחדש את כל הבלוק מרשימה נקייה, עם האזהרות לולאה ופורמט הכלי מספק, היא דרך טובה לשטח את השרשראות האלה בחזרה כשות יחיד ניתוב מחדש הם פינה אחת של SEO באתר, והם יושבים לצד מחולל מטא תגים ושאר ערכת הכלים בעמוד; המקרה הרחב יותר לשמירה על סוג זה של כלי עזר בדפדפן הוא כזה שאני עושה ב מדריך ערכת כלים למפתחי אינטרנט, וזווית הפרודוקטיביות ב- מדריך כלי פרודוקטיביות למפתחים.
האם נתוני כתובת האתר שלי פרטיים?
כן כל כלל נוצר ב - JavaScript בתוך הדפדפן שלך כתובות האתרים שאתה מזין, הדומיין שלך ומפת ההפניה מחדש שלך לעולם לא משודרים, נרשמים או מאוחסנים, והכלי ממשיך לעבוד ללא חיבור לרשת לאחר שהדף נטען מפת הפניה מחדש היא למעשה דיאגרמה של האתר שלך 's המבנה והדפים היקרים ביותר שלו, ולמרות שזה לא סודי באופן שבו סיסמה היא, אין סיבה שהיא תזרום דרך מישהו אחר 's שרת רק כדי להרכיב קובץ טקסט.
מכיוון שהעבודה מתרחשת באופן מקומי, אתה יכול לתכנן הגירה במצב לא מקוון, ליצור את הכללים במחשב נייד ללא חיבור ולהדביק אותם כאשר אתה מוכן, מבלי ששום חלק מהאתר שלך ' מבנה כתובת האתר של ה-URL יעזוב את המכשיר.That local-first approach is the same one behind every tool on Toolz.dev, וזה אומר שהכלי שמיש במטוס כמו שהוא נמצא ליד שולחן העבודה הטיעון הכללי להעדפת כלים מבוססי דפדפן שלעולם לא מעלים את הנתונים שלך הוא כזה שקבעתי ב פרטיות נתונים במדריך כלים מקוונים.
שָׁוא
מה ההבדל בין הפניה 301 ל-302?
A 301 הוא הפניה קבועה: הוא אומר לדפדפנים ולמנועי החיפוש שהדף זז לתמיד ומעביר כמעט את כל ה-URL's הישן מסמן את זה לחדש. A 302 הוא זמני: הוא מעביר מבקרים אך מאותת שכתובת האתר המקורית צריכה לשמור על הדירוג שלה ועשויה לחזור. השתמש ב-301 עבור מהלכים קבועים וב-302 רק כאשר השינוי הוא זמני באמת.
איפה אני שם את קובץ htaccess?
מקם את קובץ ה-.htaccess בספריית השורש של האתר שלך, בדרך כלל התיקיה שמכילה גם index.php או index.html. הפניות מחדש שהוכרזו שם חלות על כל האתר. שם הקובץ מתחיל בנקודה ואין לו סיומת, ו-Apache חייב להפעיל את AllowOverride עבור הספרייה, שרוב המארחים המשותפים מגדירים כברירת מחדל.
מתי עלי להשתמש בהפניה מחדש לעומת כתיבה מחדש?
השתמש בהנחיית ההפניה מחדש של mod_alias לשינוי נתיב פשוט אחד לאחד, כגון /old-page אל /new-page. השתמש בשכתוב מוד_שכתוב מחדש כאשר אתה צריך להתאים דפוס, למשל שליחת כל כתובת URL תחת /blog/2023/ לאותו נתיב ללא השנה. כלי זה פולט הפניה מחדש עבור כללים מדויקים וכתוב מחדש עבור כללי דפוס באופן אוטומטי.
כיצד אוכל לאלץ HTTPS ב-htaccess?
הפעל את Force HTTPS והמחולל מוסיף RewriteCond שבודק אם HTTPS כבוי, ואחריו RewriteRule שמפנה לגרסת https של אותו מארח ונתיב עם 301. הצבת כלל זה לפני ההפניות האחרות שלך מבטיחה שכל בקשה משודרגת ל- חיבור מאובטח תחילה, מבלי לשרשר דרך קפיצות נוספות.
האם ההפניות הללו עובדות על nginx?
מס 'פורמט.htaccess הוא ספציפי לשרת האינטרנט Apache ושרתים המחקים אותו, כגון LiteSpeed. Nginx אינו קורא קבצי.htaccess ומשתמש בהנחיות משלו לשכתב ולהחזיר בתצורת השרת, כך שתצטרך לתרגם כללים אלה לתחביר Nginx.בדוק על איזה שרת האתר שלך פועל לפני פתרון בעיות התעלמו מהפניות מחדש.
האם ההפניות הללו יפגעו ב-SEO שלי?
בשימוש נכון, הפניות מחדש מגנות על קידום אתרים במקום להזיק לו. 301 משמר את הדירוג של דף זז, וקנוניזציה של HTTPS ו-WWW מונעת מגרסאות כפולות לפצל את האותות שלך. הסיכונים נובעים מהפניית שרשראות, לולאות או הפניה לדפים לא רלוונטיים, אז שמור על כל כלל להצביע ישירות על היעד הרלוונטי ביותר.
האם כלל אחד יכול להפנות כתובות אתרים רבות בבת אחת?
כן. הגדר את הכלל למצב דפוס והשתמש בביטוי רגולרי בשדה המקור עם קבוצות לכידה, ולאחר מכן הפנה אותם ביעד עם $1, $2 וכן הלאה. לדוגמה, ^blog/(.*)$ מנותב מחדש ל-/articles/$1 מעביר כל עמוד תחת /blog/ לדף התואם תחת /articles/ עם כלל בודד.
האם נתוני כתובת האתר שלי פרטיים?
כן הכללים נוצרים בדפדפן שלך עם JavaScript שום דבר שאתה מזין לא מועלה, נרשם או מאוחסן, והכלי ממשיך לעבוד ללא חיבור לאינטרנט לאחר טעינת הדף מפת הפניה מחדש מתארת את האתר שלך 's מבנה, ועם כלי בצד הלקוח הוא אף פעם לא עוזב את המכשיר שלך כדי להרכיב את הקובץ.
בנה את ההפניות שלך בחינם מחולל הפניה מחדש של htaccess. הוא כותב חוקי Apache 301 ו-302, כוח-HTTPS ו-www קנוניזציה מרשימה פשוטה, מסודרת כהלכה, כולה בדפדפן שלך בלי שום דבר שהועלה.



