IDN ושרת הלינוקס שלכם

לא אוהב IDN, IDN זה מעצבן. ה-URL מכוער והקונפיגורציה גם כן.

התבקשתי לצרף לאתר אצלי על השרת דומיין בעברית, האתר היום הוא yaro.co.il ומהיום הוא גם צלמת.co.il. אם הכתובת הזו מכוערת בעיניכם, תתחילו לחשוב על איך לכתוב http://צלמת.co.il או http://www.צלמת.co.il ושזה יראה קריא, ובכל מקרה הדפדפן מיד יתרגם את זה ויגלוש אל http://xn--hebews.co.il/. באופן מעצבן, זה יראה לרוב יותר קריא כשזה בתוך פסקה משמאל לימין. אני אישית לא יודע למה שמישהו ירצה את זה. לקרוא עוד על הפוליטיקה ועניינים אחרים מאחורי הרישומים האלו, אני ממליץ על הפוסט הזה של שחר.

אני אניח בצד את הטיעונים לכך שאתר שמופיע בכמה שמות נראה לגוגל כתוכן מועתק ומאבד פוטנציאלית פייג'ראנק אלא אם תצרו לו sitemap שיתקן את הרושם הקלוקל, אני לא אכנס כאן לשאלות של URL שמכיל RTL באמצע, אני אגיד לכם רק איך טכנית פתרתי את הבעיה בקבצים.

מחרוזת אותיות בעברית איננה נכתבת ב-ASCII ולכן אין לה מקום בתשתיות הישנות. לרוב אנחנו כותבים עברית בקבצי טקסט ע"י קידוד ביוניקוד, ISO8859-8i או אחיו CP1255 aka Windows-1255. באיזה מאילו מקודדים שמות IDN? אף אחד מהם. אז איך יודעים לפי איזה קידוד לכתוב את שם הדומיין בקבצים של BIND ו־Apache? לא ממש מצאתי הסבר מניח את הדעת. היה ברור לי שאצטרך להשתמש בשם בסגנון xn--something אבל לא היה לי מושג מאיפה להשיג אותו, אז זה השלב הראשון. הנה מה שמצאתי:

  1. הקלידו פקודת whois עם שם הדומיין בעברית, עם קצת מזל יש לכם את הכלי המודרני והקידוד הנכון (אצלי LANG=en_US.UTF-8) ותקבלו חזרה מ-ISOC את הקידוד הנכון, יצא ש"צלמת" זה xn--hebews
  2. שגרו apt-get install idn, ותקבלו כלי CLI לתרגום המחרוזות המעצבנות האלו.
  3. חפשו בגוגל מתורגמן IDN, יש הרבה.

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

עצה – הדרך הנוחה לניהול דומיינים מרובים לאותו האתר תחת BIND הוא הפניית כמה דומיינים לאותו קובץ zone, אם כתבתם אותו נכון ללא שמות מלאים (למשל השמות בקובץ מתייחסים ל־www ולא לשם מלא כמו www.yaro.co.il. – עם הנקודה בסוף כמובן). אני מייצר את ה-named.conf אוטומטית מרשימות שמות של דומיינים שמצביעים על קבצים עם שמות כמו הדומיינים, אז אני עושה דבר דומה עם symlinks ברמת קבצי ה־zone במקום בקובץ הקונפיג אבל התוצאה זהה. אפשרות אחרת היא לעשות שימוש ברשומת DNAME, ולפתור כמה בעיות במכה, כולל אולי זרימת הדואל. לא ניסיתי.

בעיה בדביאן לני – כלי חיפוש השמות host לא תומך כנראה יוניקוד, כי לחפש whois עם מחרוזת בעברית הצלחתי, אבל לא host. עוד נקודה לרעת השיטה.

בשלב הבא צריך להוסיף את האתר גם באפאצ'י. גם כאן עברית יוניקוד בקבצי קונפיגורציה לא תעבוד ותאלצו להוסיף את כתובות ה-IDN המכוערות. לכן בקונפיגורציה של האתר הסטאנזה עכשיו נראית ככה:

ServerName yaro.co.il
ServerAlias www.yaro.co.il
ServerAlias xn--6dbfabcqvj1f4b.co.il
ServerAlias xn—-zhcpbrbbyge2cxcu.co.il
ServerAlias xn--hebews.co.il
ServerAlias www.xn--6dbfabcqvj1f4b.co.il
ServerAlias www.xn—-zhcpbrbbyge2cxcu.co.il
ServerAlias www.xn--hebews.co.il

(הערה, בזמן הפרסום, הדומיינים המוזכרים פה עוד לא מופנים אל השרת שלי אז הלינקים העבריים עוד לא עובדים, זה יקח עוד כיומיים)

5 Replies to “IDN ושרת הלינוקס שלכם”

  1. אין ספק שלמשתמשים יהיה קשה להקליד http://צלמת.co.il בסדר הנכון. מה שחסר זה תמיכה בשמות נרדפים עבריים. כתובת כגון הטטפ://צלמת.קו.יל היא כבר קצת יותר מעשית, לא?

  2. נדמה לי שאף אחד לא כותב http://
    ו צלמת.co.il
    זה כבר לא נורא

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

  3. אני לא מבין מי בכלל צריך את זה?
    אבל מצד שני רוב האנשים, כבר לא רושמים כתובת מלאה – רק את שם האתר
    ככה שזה לא נורא.

  4. נראה שיש פה בעיה נוספת. וורדפרס החליט להחליף חלק מהתווים בכתובות שציינת ("–" ← "—"), מה שהופך אותן לבלתי שמישות לחלוטין.

כתיבת תגובה