mod rewrite πρόβλημα

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
ksamole
Δημοσιεύσεις: 92
Εγγραφή: 08 Οκτ 2006 04:43

mod rewrite πρόβλημα

Δημοσίευση από ksamole » 06 Απρ 2009 13:49

Εχω ενα site ας πουμε που εχει links της μορφης:

δινοντας στον browser το link
http://www.site.lan/index.php?lang=en&category=contact
σε παει στην κατηγορια contact

πως θα το κανω οταν δινω στον browser το link
http://www.site.lan/en/contact
να σε πηγαινει στην ιδια κατηγορια ?
(Τελικά το εκανα αυτο αλλα τωρα εχω προβλημα με τα relative paths απο τις εικόνες
και τα css που εχω στη σελιδα... δεν τα βλεπει πρεπει να τα αλλάξω με το χέρι να βαλω
absolute paths ? τι να κάνω?)

με mod rewrite..

Επισης μεσα στη σελιδα εχω links του στυλ
index.php?lang=gr&category=otinane

θελω να αλλαζουνε αυτοματα σε links του στυλ
gr/otiname

γινετε αυτο με mod rewrite η πρεπει να αλλαξω εγω τα links που εχει μεσα η σελίδα ?

Άβαταρ μέλους
Burned4
Δημοσιεύσεις: 324
Εγγραφή: 21 Σεπ 2007 12:50
Επικοινωνία:

mod rewrite πρόβλημα

Δημοσίευση από Burned4 » 06 Απρ 2009 23:48

Αν σου πω ότι και γω αυτά έψαχνα σήμερα και έφαγα κάποιες ώρες αλλά τα έλυσα :p

Λοιπόν ας τα πάρουμε από την αρχή. Για να κάνεις το site να διαβάζει τα URLs όπως τα θες πρέπει να βάλεις στο htaccess (για apache πάντα) το παρακάτω:

Κώδικας: Επιλογή όλων

Options +FollowSymLinks
RewriteEngine on
RewriteRule index/lang/(.*)/category/(.*)/ index.php?lang=$1&category=$2
2ον για να μην αλλάξεις τα relative paths σε absolute θα πρέπει να βάλεις στο head της σελίδας το

Κώδικας: Επιλογή όλων

<base href="http&#58;//www.domain.gr/" />
όπου www.domain.gr το όνομα του site σου. Αυτό ορίζει στη σελίδα ότι θα πρέπει να τρέχει τα relative paths από το σημείο που του ορίζεις δλδ το www.domain.gr και όχι από το www.domain.gr/en/contact που στον browser φαίνεται ως 2ος υποφάκελος του root του site και δεν βρίσκει τα paths.

3oν δυστυχώς δεν αλλάζουν μόνα τους τα link που περιέχονται στον κώδικα της σελίδας αλλά μπορείς να τα αλλάξεις εύκολα κάνοντας ένα find (το παλιό link) και replace (το νέο link) ώστε να τα αλλάξεις όλα κατευθείαν σε όλη τη σελίδα :wink:
You can do anything, but not everything.

ksamole
Δημοσιεύσεις: 92
Εγγραφή: 08 Οκτ 2006 04:43

mod rewrite πρόβλημα

Δημοσίευση από ksamole » 07 Απρ 2009 03:01

http://www.chrisofakis.gr/materials/ σε αυτο το site aμα κανεις view source
θα δεις οτι δεν εχει <base href και βαζει ολα τα links σε στυλ

Κώδικας: Επιλογή όλων

<link rel="stylesheet" type="text/css" media="screen,projection,print" href="/media/css/layout3_setup.css" />
<link rel="stylesheet" type="text/css" media="screen,projection,print" href="/media/css/layout3_text.css" />
κτλπ

Πως το κανει αυτό ?

3oν δυστυχώς δεν αλλάζουν μόνα τους τα link που περιέχονται στον κώδικα της σελίδας αλλά μπορείς να τα αλλάξεις εύκολα κάνοντας ένα find (το παλιό link) και replace (το νέο link) ώστε να τα αλλάξεις όλα κατευθείαν σε όλη τη σελίδα
ενοείς find and replace με καποιο regular expression απο php μεσα στην σελίδα?

Άβαταρ μέλους
Burned4
Δημοσιεύσεις: 324
Εγγραφή: 21 Σεπ 2007 12:50
Επικοινωνία:

mod rewrite πρόβλημα

Δημοσίευση από Burned4 » 07 Απρ 2009 12:12

To site που που αναφέρεις μπορεί να χρησιμοποιεί την επιλογή της PHP

Κώδικας: Επιλογή όλων

ini_set&#40;"include_path", ".&#58;../&#58;./include&#58;../include"&#41;;
η οποία ορίζει στο PHP.ini πoια folders θα είναι προσπελάσιμα από οπουδήποτε στο site με include.

Αυτός είναι ένας άλλος τρόπος που μπορείς να διορθώσεις το πρόβλημα με τα paths αλλά αυτό με το <base> είναι πολύ καλύτερο και βολικό για μένα. :wink:



Replace εννοούσα μέσω του editor που χρησιμοποιείς (πχ Dreamweaver) του λες να ψάξει για

Κώδικας: Επιλογή όλων

<a href="index.php?lang=en&category=contact"
και να το αντικαταστήσει με το

Κώδικας: Επιλογή όλων

<a href="en/contact/"
You can do anything, but not everything.

ksamole
Δημοσιεύσεις: 92
Εγγραφή: 08 Οκτ 2006 04:43

mod rewrite πρόβλημα

Δημοσίευση από ksamole » 07 Απρ 2009 12:57

δυστηχως τα links στη σελιδα τα δημιουργω δυναμικα

γινεται με κανα κολπο ον the fly με regexps να το κανουμε
γιατι αμα δε το κανουμε αυτο μουφα το mod rewrite γιατι
πρεπει να αλλαξεις τον κωδικα του site και μετα που θα αλλαξεις τον κωδικα
πρεπει οποσδηποτε ο host σου να εχει mod_rewrite γιατι αλλιως δεν θα παιζει τιποτα...

Άβαταρ μέλους
Burned4
Δημοσιεύσεις: 324
Εγγραφή: 21 Σεπ 2007 12:50
Επικοινωνία:

mod rewrite πρόβλημα

Δημοσίευση από Burned4 » 07 Απρ 2009 13:07

Για να το κάνεις δυναμικό αντί για

Κώδικας: Επιλογή όλων

<a href="en/contact/"
άλλαξέτο σε

Κώδικας: Επιλογή όλων

<a href="<? echo $cat.'/'.$page.'/'; ?>" 
Έτσι θα ορίζεις δυναμικά το $cat και το $page πριν το link και το link θα δημιουργείται μόνο του. Κάτι τέτοιο δεν έλεγες?
You can do anything, but not everything.

ksamole
Δημοσιεύσεις: 92
Εγγραφή: 08 Οκτ 2006 04:43

mod rewrite πρόβλημα

Δημοσίευση από ksamole » 07 Απρ 2009 13:38

ναι σωστά ....
Αλλα εστω οτι ο host μου δεν εχει mod rewrite πρεπει μετα να αλλαζω ολα τα links
σε μορφη που παιζει χωρις mod rewrite

απο οτι καταβαλα τα friendly urls πρεπει να τα κανεις σε επιπεδο εφαρμογης και οχι
να βασιζεσαι στο mod rewrite...
εδω εξηγει πως τα κανεις σε επιπεδο εφαρμογης

http://www.websitepublisher.net/article ... ndly_urls/

Άβαταρ μέλους
Burned4
Δημοσιεύσεις: 324
Εγγραφή: 21 Σεπ 2007 12:50
Επικοινωνία:

mod rewrite πρόβλημα

Δημοσίευση από Burned4 » 07 Απρ 2009 13:57

:-? Εσύ ρώτησες για Mod rewrite...

Αν δεν υποστηρίζει ο host σου τότε ψάξε για κάτι άλλο.. Πάντως δεν πιστεύω ότι υπάρχει host που θα σου αρνηθεί να ενεργοποιήσει το rewrite module αν του το ζητήσεις.. Χρησιμοποιείται ευρέως πλέον.

Και στο link που παραθέτεις λέει για mod rewrite και άλλους 2 τρόπους που πάλι σχετίζονται έμμεσα ή αμεσα με το .htaccess. Οπότε θα είναι δύσκολο να το κάνεις full σε επίπεδο εφαρμογής ανεξάρτητο από hosting..
You can do anything, but not everything.

ksamole
Δημοσιεύσεις: 92
Εγγραφή: 08 Οκτ 2006 04:43

mod rewrite πρόβλημα

Δημοσίευση από ksamole » 11 Απρ 2009 22:55

αμα το site ειναι ταθτοχρονα σε 2 διευθυνσεις πχ

http://www.site.com
http://site.com

τοτε με το base tag πως το κανεις ? βαζεις 2 base tags ?

Άβαταρ μέλους
Burned4
Δημοσιεύσεις: 324
Εγγραφή: 21 Σεπ 2007 12:50
Επικοινωνία:

mod rewrite πρόβλημα

Δημοσίευση από Burned4 » 11 Απρ 2009 23:15

Το base tag δηλώνει το σημείο που βρίσκετε η σελίδα σου ώστε να όλα τα relative paths που έχεις να δουλεύουν σωστά (πχ. εικόνες και CSS). Δεν γίνετε να βάλεις 2 base tags

Εσύ χρειάζεσε ένα base tag. Αυτό που χρησιμοποιείς γενικά στο site πχ http://www.site.gr . Αυτό δουλεύει εσωτερικά για να δηλώσει τα Paths και δεν φαίνετε πουθενά. Οπότε από όπου και να μπεί ο χρήστης θα το βλέπει σωστά απλά αν κάνει κλικ πχ σε μια εικόνα που χρησιμοποιεί relative path θα δεί το absolute path πάντα ως http://www.site.gr/image.jpg από όπου και αν μπει.

Γενικά πάντως καλό είναι να χρησιμοποιείς μόνο ένα εκ των www.site.gr και site.gr και το άλλο να το κάνεις ένα 301 redirect στο πρώτο γιατί η μηχανές αναζήτησης βλέπουν διπλο περιεχόμενο και μειώνεται η αξιοπιστία του site σου.
You can do anything, but not everything.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες