הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   עזרה ב htacces (https://hosts.co.il/forums/showthread.php?t=91830)

dor77 29-08-11 18:08

עזרה ב htacces
 
שלום..
אני רוצה לשנות את הקישורים באתר בעזרת htacces..
נגיד וכתובת האתר היא 123.co.il:

PHP קוד:


#ErrorDocument 404 /index.php
RewriteEngine On

AddDefaultCharset UTF
-8



RewriteRule 
^http://www.123.co.il/(.*)$ /http://www.123.co.il/category.php?category=$1 

זאת אומרת שבמקום שיפנו לפה:
http://www.123.co.il/category.php?category=cat1
יפנו לפה:
http://www.123.co.il/category/cat1


מה לא עשיתי בסדר?
בנוסף אני רוצה לעשות שהקובץ הראשי לא יהיה index.php אלא index.html.
בעבר הצלחתי עכשיו זה לא מסתדר..
העלתי את הקובץ לשרת בשם htacces. (עם הנקודה).

אשמח לעזרה חברים..

תודה.

Itay 29-08-11 18:20

דבר ראשון - חסר לך s אחת - htaccess
דבר שני - החוק שלך אומר שכל בקשה לכל עמוד בעצם תגיע אל העמוד category.php בצורה הזאת לדוגמא:
אם ניגשת אל pics/someimage.jpg זה יוביל אותך אך category.php?category=pics/someimage.jpg

תוסיף תנאים לחוק, שיתקיים רק אם הקובץ או התיקיה לא נמצאו
ובחוק עצמו, תגדיר ספציפית שאם נכנסים אל כתובת בסגנון
/category/somecat זה יוביל אל category.php?category=somecat
כלומר:
קוד:

RewriteRule ^category/(.*)$ category.php?category=$1

dor77 29-08-11 18:42

תודה אבל איך אני יכו שלא יהיה category/?
כאילו רק ככה:
http://www.123.co.il/cat1.html
וגם לעשות שדף הבית יהיה html ולא php..?

תודה רבה.

Itay 29-08-11 19:37

קוד:

RewriteRule ^index.html$ index.php
ובקשר לשאלה שלך - יש כמה דרכים, או לשלוח כל בקשה שלא נמצאה על השרת (כל בקשת 404 בעצם) לעמוד מסויים שיבדוק את המבנה של הכתובת ואם זה מתאים למה שאתה רוצה תפנה אותו למקום הנכון - לפי דאטה בייס או לפי תנאים פשוטים
או לעשות משהו כמו שאמרתי מקודם, רק שזה לא יראה כמו תיקיה - בעצם ככה:
קוד:

RewriteRule ^cat([0-9]+).html$ category.php?category=$1
שזה אומר שבעצם כל פעם שיכנסו למשהו בסגנון של
domain.com/cat1253564.html זה בעצם יגש אל category.php?category=1253564

Kfir.G 29-08-11 19:45

אולי זה טיפה off topic פה אבל אני עדיין חושב ששווה להסביר על זה.
איתי הציע פה שיטה שהיא מאוד פופולארית:

ציטוט:

נכתב במקור על ידי Itay (פרסם 816923)
...לשלוח כל בקשה שלא נמצאה על השרת (כל בקשת 404 בעצם) לעמוד מסויים שיבדוק את המבנה של הכתובת ואם זה מתאים למה שאתה רוצה תפנה אותו למקום הנכון...

רציתי להרחיב קצת למה השיטה הזאת עדיפה ומומלצת, לפי דעתי.
כשאתה מפנה כל request שמגיע אלייך לשרת לעמוד PHP ספציפי שיודע לעשות ניתוב יש לך שליטה הרבה יותר רחבה. מה גם שככה אתה יכול לטפל במבנה של הקישור רק בעמוד אחד ולא לדאוג לזה בשאר העמודים. אתה מוזמן להסתכל על מימושים כמו של CodeIgniter למשל שהוא ממש פשוט ולראות עד כמה השיטה הזאת פשוטה וחזקה. אני בעצמי מימשתי כבר מספר וריאציות של השיטה הזאת (דרך מסד, דרך קובץ הגדרות, הפניה לקובץ אחר, הפעלת פונקציה ספציפית, הפעלת מתודה ספציפית, הפעלת hook, הפעלת שרשרת מתודות ועוד כל מיני מימושים שונים ומשונים בהתאם לפרוייקט הספציפי שעליו עבדתי). אם אתה צריך עזרה לממש את זה תשאל ואני אנסה לעזור :)

dor77 30-08-11 10:33

תודה רבה על העזרה אבל משהו עם הקטגוריות לא בסדר..
יש אצלי דף כזה:
http://www.domain.co.il/category.php?category=category1
אני רוצה שיוכלו לגשת ככה:
http://www.domain.co.il/category1.html

כנ"ל עם פרופיל נגיד:
http://www.domain.co.il/profile.php?profile=profile1

השאלה האם זה לא יצור בלבול בשרת שיהיה אפשר לגשת אל הפרופילים גם ככה:
http://www.domain.co.il/profile1.html
זה אותו מבנה כאילו.

תודה לכם.

Itay 30-08-11 18:18

אותו מבנה של מה?

dor77 31-08-11 22:50

תראו הסתדרתי..
האמת שיש לי שאלה אחרת..איך אני עושה שכאשר לינק בנוי מ2 מילים ויותר אז יווצר קו ביניהם?
למשל אם הוספתי מאמר שנקרא "איך לקדם אתר אינרטנט" אז זה יהיה "איך-לקדם-אתר-אינטרנט"
תודה רבה.

Itay 31-08-11 23:00

זה תלוי באיך אתה עובד - אם אתה עובד עם PHP שמזהה את הקישורים, אתה יכול לשמור מבנה של הכתובת ה"ידידותית" בדאטהבייס ואז לחפש לפי הכתובת שהוכנסה
במקרה שאתה עובד רק דרך HTACCESS עדיף להעביר את ה-ID ואחריו פשוט לקבל כל טקסט שיכניסו, ואתה תשלוף לפי ה-ID
לדוגמא: http://www.url.com/category/652/This...n-Related-Text
ואז כשנכנסים לכתובת בעצם אתה מזהה את הקטגוריה לפי ה-ID שבמקרה הזה הוא 652
זה הקוד למקרה שהסברתי עכשיו:
קוד:

RewriteRule ^category/([0-9]+)/(.*)$ category.php?category=$1
ה-PHP זה כבר הסבר שונה, השאלה היא מה אתה מעדיף

dor77 01-09-11 00:47

האמת שלא ממש הבנתי..
תראה, יש לי קטגוריות באתר, נגיד קראתי לקטגוריה "טיפים ומדריכים"
אז אני רוצה שהקישור יהיה:

www.domain.co.il/category/טיפים-ומדריכים.html

בפאנל ניהול הכנסתי טיפים ומדריכים..
אם אפשר לעשות זאת ב htacces זה טוב..אבל לא הבנתי איך..מה שהראית לי לא פותח את הבעיה אני חושב..יכול להיות שלא הבנתי נכון..
כרגע זה מציג לי עם רווח ביניהם כלומר:
category/ טיפים ומדריכים.html

בPHP ניתן לעשות זאת על ידי הצבת קו אחרי כל רווח ואז לשמור את זה בשדה במסד נתונים לא?
אבל זה סתם מטומטם אני חושב לא?
אשמח להסבר מעמיק יותר..אני מאוד חדש בקטע של htaccess..

תודה רבה לך איתי ולשאר.


כל הזמנים הם GMT +2. הזמן כעת הוא 15:42.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ