24-06-2010, 17:29
|
|
|
חבר מתאריך: 15.08.06
הודעות: 1,561
|
|
שמע, הרגת אותי.
אבל בסוף הצלחתי.
הבעיה היחידה פה שאני מזהם את הquery string בעוד פרמטר. לא כזה קריטי, במיוחד שאפשר להכניס שם כל מחרוזת במקום processed
קוד:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /test/
RewriteCond %{QUERY_STRING} id=(\d+)
RewriteCond %{QUERY_STRING} !processed=true
RewriteRule ^index.php(.*)$ %1? [L,R=301]
RewriteRule ^(\d*)$ index.php?id=$1&processed=true [L]
הסבר:
התיקית בסיס שלי הייתה test, תשנה את זה אצלך לתיקיה שאתה עובד עליה, או שתוריד אם אתה בroot.
החוק הראשון: בודק שיש id בquery ושהוא שווה למספר, בודק שאין את הביטוי processed=true בתוך הquery, ובודק שהURL מכיל index.php. הוא מעביר למספר שמצאתי מקודם בתוך האיידי - %1 אומר לו לקחת את המחרוזת הראשונה שהוא מצא בתוך המצבים.
החוק השני - בודק אם הכתובת מכילה רק מספר, ואם כן מעביר לindex.php עם המספר בתור id ועם processed=true כדי שהוא לא יתקע בתוך לופ אינסופי.
שים לב שבחוק הראשון השרת נותן 301, ככה שהכתובת שהיוזר רואה משתנה, ובחוק השני ההפנייה מתבצעת רק על השרת, והיוזר לא יודע איזה דף הוא באמת רואה.
_____________________________________
!!אזהרה!!
ההודעה עלולה להכיל שברי אגוזים ו/או איברי דגים כלשהם
!!אזהרה!!
|