13-09-2009, 00:46
|
מנהל
|
|
חבר מתאריך: 26.07.08
הודעות: 6,473
|
|
אוקי אז ניסיתי לבצע זאת ובזכותך גם אני למדתי:
פעלתי לפי המדריך של נדב להתקנת mod_rewrite (נמצא בארכיון הפורום) ואיפשרתי אותו.
אחרי כמה ניסויים הגעתי למצב שבו כתבתי את הקוד הבא שעובד טוב:
קוד:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^שלום$ hello.php [L]
כאשר הקישור שאתה נכנס אליו הוא:
קוד:
http://localhost/שלום
אין משהו מיוחד בקוד הנ"ל.
אז למה זה (כנראה) לא הצליח אצלך? כי לא שמרת את הקובץ (שמכיל תוי עברית, כלומר תוים שאינם בתחום ה-ASCII) בקידוד UTF-8, שזה הקידוד שבו הדפדפן משתמש להעברת מידע אלא אם צויין אחרת.
כאשר נכנסתי לקישור הנ"ל וה-mod_rewrite לא הפנה אותי לקובץ הרצוי, נכנסתי ל-error.log והבחנתי בשורה הבאה:
קוד:
[...] [error] [...] File does not exist: C:/.../htdocs/\xd7\x90\xd7\x94\xd7\x9c\xd7\x9f
שים לב מה apache קלט - את המילה "שלום" המקודדת בקידוד UTF-8.
ניתן לשים לב שזה UTF-8 בזכות 2 דברים לפחות: חזרה על התו 0xd7 כל 2 תוים, והעובדה שגודל המחרוזת הוא כפול מכמות התוים. כמות התוים במילה "שלום" היא 4, וכמות התוים המייצגים את המילה בקידוד UTF-8 זה 8 כפי שניתן לראות.
נערך לאחרונה ע"י dorM בתאריך 13-09-2009 בשעה 00:51.
|