וודאו שאנשים לא יגלשו בעמודים חסרי משמעות שלעמוד 404 - עמוד לא נמצא. במיוחד עמוד ברירת המחדל של ג'ומלה למקרים אלו מפני שהוא די מכוער. במיוחד שהוא יהיה שונה מכל עמוד אחר באתר שלכם, אנשים עלולים לחשוב שהאתר שבור ויעזבו אותו. אם זהיקרה לעתים קרובות זה ישפיעה על הדרוג במנועי החיפוש. הדבר הטוב ביותר הוא ליצור עמוד מיוחד למטרה זאת בתבנית שלכם. זה עובד מעט שונה בין הגרסאות השונות של ג'ומלה (2.5 ו-3):

יצירת עמוד-404 בג'ומלה 2.5

זה די פשוט ליצור עמוד 404 בג'ומלה 2.5. ראשית, צרו מאמר למטרה זאת. (עמודה שגיאה , וכו') והכניסו בו תוכן נחמד, ולדוגמא, הכניסו קישור לעמוד הבית ולעמוד החיפוש. הוסיפו אותו לתפריט, אבל אל תפרסמו את פריט התפריט.

לאחר מכן העתיקו את הקובץ templates/system/error.php לסיפריית השורש של התבנית שלכם.

בג'ומלה 2.5: עליכם להביט באיזור הזה:

defined('_JEXEC') or die;

ומיד לאחריו הוסיפו את הקוד הבא:

if (($this->error->getCode()) == '404') {
header('Location: /index.php?option=com_content&view=article&id=999');
exit;
}

החליפו את קוד המאמר (במקרה זה 999) בקוד של המאמר שיצרתם.

אתם גם יכולים להורידו בקישור הבא ולהוסיף אותו לסיפריית השורש של התבנית שלכם וכמובן, להחליף את קוד המאמר מ-999 לקוד המאמר שיצרתם:

error.php (2.5 version, zipped)

יצירת עמוד-404 בג'ומלה 3

גם התאמת עמוד 404 בג'ומלה 3 הוא דיי פשוט. גם כאן, צרו עמוד 404 ותנו לו שם כרצונכם (עמוד שגיאה 404, וכדומה) והכניסו תוכן קריא ונעים שיכלול, לדוגמא, קישור לעמוד הבית ו\או לעמוד החיפוש. לאחר מכן הוסיפו אותו בתפריט, אבל אל תפרסמו את פריט התפריט.

לאחר מכן העתיקו את הקובץ templates/system/error.php לסיפרית השורש של התבנית שלכם.

חפשו אחר האיזור הבא:

defined('_JEXEC') or die;
if (!isset($this->error))
{
$this->error = JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR'));
$this->debug = false;
}
//get language and direction
$doc = JFactory::getDocument();
$this->language = $doc->language;
$this->direction = $doc->direction;

?>

לאחר מכן, הוסיפו את הקוד הבא מיד לאחר השורה האחרונה, לפני השורה הסוגרת את קוד ה-PHP, כך שהקוד החדש יראה כך:

defined('_JEXEC') or die;
if (!isset($this->error))
{
$this->error = JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR'));
$this->debug = false;
}
//get language and direction
$doc = JFactory::getDocument();
$this->language = $doc->language;
$this->direction = $doc->direction;

if (($this->error->getCode()) == '404') {
header('Location: /index.php?option=com_content&view=article&id=999');
exit;
}

?>

החליפו, כמובן, את קוד המאמר (999) בקוד המאמר שיצרתם.

אפשרות נוספת היא להוריד את הקובץ הבא ולשמרו בספריית השורש של התבנית שלכם והחלפת קוד המאמר כפי שהוסבר קודם:

error.php (Joomla 3 version, zipped)

קוד משופר

דוגמא שתהיה ככל הנראה טובה יותר משתי הדוגמאות הקודמות היא להחליף את השורה המתחילה ב-'header("Location....' בקוד הבא:

header("HTTP/1.0 404 Not Found");
echo file_get_contents(JURI::root().'/index.php?option=com_content&view=article&id=999');

שימו לב שבחלק מהשרתים יש צורך להוריד את  הלוכסן (slash) שמופיע לפני index.php? בכדי להמנע משגיאות.

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

הימנעות משגיאות 404

כמובן שיש צורך להמנע משגיאות של עמוד לא קיים (404) מלכתכילה. לכן חשוב שהכתובות יהיו קריאות ומובנות מה שיקל על הגולש להתמצא באתר. לכן, לדוגמא, כאשר יש לכם כתובת מהצורה הבאה /webshop/products/product1, לעתים הגולש פשוט ימחוק את החלק האחרון בכתובת וינסה להגיע לעמוד המוצרים. לכן, תדאגו שקישור זה יעבוד.

סיבה נוספת שהגולשים יכולים להגיע לעמוד 404 היא עקב המצאות קישורים ישנים. במקרה זה עליכם לבצע העברה לעמוד חדש בשיטה המתוארת ב-301 - קישורי העברה לכתובות ישנות. זה מוסבר במאמר אחר.

מאמר זה הינו תרגום של מאמר שנכתב על ידי Simon Kloostra. ניתן לקרוא את המקור כאן