apache rewrite γίνετε ?

Τεχνικές και μόνο Συζητήσεις για WEB hosting servers, Mail servers, DNS servers. Όχι αναζήτηση υπηρεσιών εδώ!

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

Απάντηση
pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

apache rewrite γίνετε ?

Δημοσίευση από pimpogio » 19 Ιαν 2011 17:43

Εχω 2 links ας πουμε της μορφης ?language=en_US&category=root/var&page=2&per_page=100&others=true
language=en_US&category=root/var/cache/dna&page=2&per_page=100&others=true
υπαρχει τροπος να τα κανω με rewrite

/en_US/root/var/2/100&others=true
/en_US/root/var/cache/dna/2/100&others=true

Ειναι εφικτό αυτο ?

Αν δεν γινετε πως πρεπει να κανω τα αρχικα links ωστε να γινουνε με rewrite σε αυτη τη μορφη ?
/en_US/root/var/2/100&others=true
/en_US/root/var/cache/dna/2/100&others=true

που κολαω ...
category=root/var/cache/dna
δεν μπορω να ξεχωρισω τα / που ειναι η τιμη της category απο τα πραγματικα / του url ...

Ευχαριστω εκ των προτερων οποιο ριξει καποια ιδεα ...

Άβαταρ μέλους
fAzer
Δημοσιεύσεις: 361
Εγγραφή: 15 Νοέμ 2009 16:29

apache rewrite γίνετε ?

Δημοσίευση από fAzer » 20 Ιαν 2011 06:55

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

RewriteEngine On

RewriteRule ^en_US/root/var/([0-9]+)/([0-9]+)&others=true$ language=en_US&category=root/var&page=$1&per_page=$2&others=true

RewriteRule ^en_US/root/var/cache/dna/([0-9]+)/([0-9]+)&others=true$ language=en_US&category=root/var/cache/dna&page=$1&per_page=$2&others=true

δοκιμασε πχ

en_US/root/var/2/100&others=true
η
en_US/root/var/cache/dna/2/100&others=true

οπως ανεφερες..
γινεται τπτ

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

apache rewrite γίνετε ?

Δημοσίευση από pimpogio » 20 Ιαν 2011 14:17

fAzer έγραψε:

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

RewriteEngine On

RewriteRule ^en_US/root/var/([0-9]+)/([0-9]+)&others=true$ language=en_US&category=root/var&page=$1&per_page=$2&others=true

RewriteRule ^en_US/root/var/cache/dna/([0-9]+)/([0-9]+)&others=true$ language=en_US&category=root/var/cache/dna&page=$1&per_page=$2&others=true

δοκιμασε πχ

en_US/root/var/2/100&others=true
η
en_US/root/var/cache/dna/2/100&others=true

οπως ανεφερες..
γινεται τπτ
Σε ευχαριστω για την απαντηση σου αλλα αυτο δεν μου κανει γιατι ειναι κατι στατικο..
τι εννοω
το en_US ειναι η 1η παραμετρος
το root/var ή root/var/cache/dna ειναι η 2η παραμετρος
το 2 η τριτη
το 100 η 4η
και το others=true η 5η

οπως μου το ειπες παραπανω ειναι στατικο ενω εγω θελω να περνω τις τιμες δυναμικα..

billiaswhs
Δημοσιεύσεις: 346
Εγγραφή: 11 Νοέμ 2004 00:29
Επικοινωνία:

apache rewrite γίνετε ?

Δημοσίευση από billiaswhs » 20 Ιαν 2011 21:10

Δες τα παρακάτω

http://efreedom.com/Question/1-1991631/ ... -I18n-L10n

http://buup.mephir.com/read/ultimate-gu ... -rewriting

αλλιώς δοκίμασε να δεις το routing subframework του symfony

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

apache rewrite γίνετε ?

Δημοσίευση από pimpogio » 21 Ιαν 2011 13:46

σε ευχαριστω αλλα απο οτι καταλαβα σε επιπεδο apache δεν γινετε και πρεπει
να γινει μοντα στον κωδικα που δεν το βλεπω καλο .....

Τουλαχιστον αυτο το rewrite μπορει να γινει σε επιπεδο apache ?

language=en_US&category=root/var&page=2&per_page=100&others=true
language=en_US&category=root/var/cache/dna&page=2&per_page=100&others=true
να γινει rewrite σε

/en_US/var/2/100&others=true
ή
/en_US/dna/2/100&others=true

δηλαδη η τιμη του root να ειναι οτι υπαρχει μετα το τελευταίο / της τιμης του.

Άβαταρ μέλους
CyberCr33p
Honorary Member
Δημοσιεύσεις: 3197
Εγγραφή: 06 Νοέμ 1999 01:00
Τοποθεσία: Αθήνα
Επικοινωνία:

apache rewrite γίνετε ?

Δημοσίευση από CyberCr33p » 21 Ιαν 2011 14:41

Χρειάζεται να κάνεις και το rewrite από πλευράς web-server αλλά και στην εφαρμογή να αλλάξεις το κώδικα ώστε να δουλεύει με τους νέους συνδέσμους.

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

apache rewrite γίνετε ?

Δημοσίευση από gvre » 21 Ιαν 2011 18:02

pimpogio έγραψε:σε ευχαριστω αλλα απο οτι καταλαβα σε επιπεδο apache δεν γινετε και πρεπει
να γινει μοντα στον κωδικα που δεν το βλεπω καλο .....
Και πως κατέληξες σε αυτό το συμπέρασμα;

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

apache rewrite γίνετε ?

Δημοσίευση από Khronos » 24 Ιαν 2011 10:31

Ε αφού είναι "κακή πρακτική" :P

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

apache rewrite γίνετε ?

Δημοσίευση από pimpogio » 12 Φεβ 2011 23:05

pimpogio έγραψε:
Τουλαχιστον αυτο το rewrite μπορει να γινει σε επιπεδο apache ?

language=en_US&category=root/var&page=2&per_page=100&others=true
language=en_US&category=root/var/cache/dna&page=2&per_page=100&others=true
να γινει rewrite σε

/en_US/var/2/100&others=true
ή
/en_US/dna/2/100&others=true

δηλαδη η τιμη του root να ειναι οτι υπαρχει μετα το τελευταίο / της τιμης του.
επαναφερω το θεμα καθως δεν βρηκα λυση...
δινει καποιος το link στο browser του
localhost/en_US/root/var/cache/dna/2/100&others=true
γινετε ο apache να κανει rewrite σε
localhost/i.php?language=en_US&category=root/var/cache/dna&page=2&per_page=100&others=true
ή
localhost/en_US/root/var/2/100&others=true
γινετε ο apache να κανει rewrite σε
localhost/i.php?language=en_US&category=root/var&page=2&per_page=100&others=true

με δυναμικο και οχι στατικο rewrite ...

η τιμη στο category μπορει να ειναι για παραδειγμα root ή root/test/mystest/super ή root/ok-1

εαν την τιμη του category την κανω root ή root.test.mystest.super ή root.ok-1 δεν υπαρχει
κανενα προβλημα το προβλημα ειναι οταν χρησιμοποιω / στην τιμή του category γιατι μπερδευετε με τα αλλα / στο url.
Δεν μπορω με τιποτα να βρω λυση μπορει καποιος να βοηθησει ?

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

apache rewrite γίνετε ?

Δημοσίευση από gvre » 12 Φεβ 2011 23:10

Άφησε τον apache και κάνε τη διαχείριση στην εφαρμογή σου.

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

apache rewrite γίνετε ?

Δημοσίευση από pimpogio » 12 Φεβ 2011 23:36

δηλαδη μου προτεινεις αυτο για παραδειγμα:
RewriteRule ^([A-Za-z0-9-/]+)$ i.php?a=$1 [NC,L]
και να κανω ολο το parsing στο επιπεδο της εφαρμογης ?

δεν υπαρχει δηλαδη καμμια περιπτωση να γινει αυτο σε επιπεδο apache ?

Αυτο θελω να αποφυγω το να κανω parsing στην εφαρμογη θελω αμα γινετε να το κανω σε επιπεδο apache... αλλα αφου δε γινετε ...

Σε ευχαριστω παντως..

Μαλλον το βλεπω να μην βαζω / αλλα . στην τιμη της category ωστε να γλιτωσω το parsing στην εφαρμογη
μετα θα ειναι βεβαια μαπα τα urls αλλα δεν μπορεις να τα εχεις και ολα..

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

apache rewrite γίνετε ?

Δημοσίευση από dva_dev » 12 Φεβ 2011 23:55

Θεωρητικά ένα regular expression σαν αυτό θα παίξει

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

^([\w]+)/(.+)/(\d+)/(\d+)&(.+)$
Πρακτικά θα πρέπει να το δοκιμάσεις και να διορθώσεις ότι δεν παίζει σωστά ή αν θέλεις να το φέρεις στα μέτρα σου γιατί δεν το έχω δοκιμάσει. Προτιμώ, αν το κάνω, να το κάνω με κώδικα για να μπορώ να κάνω και debugging.

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

RewriteEngine On
RewriteRule ^([\w]+)/(.+)/(\d+)/(\d+)&(.+)$ language=$1&category=$2&page=$3&per_page=$4&$5

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

apache rewrite γίνετε ?

Δημοσίευση από pimpogio » 13 Φεβ 2011 01:24

σε ευχαριστω θα το ψαξω...
βρηκα και ενα site που λεει τα regular expressions.
( http://www.regular-expressions.info/reference.html )

το ολο κολπο αν καταλαβα καλα ειναι το \d που πιανει αριθμο και το category δεν ειναι
αριθμος ...

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

apache rewrite γίνετε ?

Δημοσίευση από nbc » 13 Φεβ 2011 08:58

Το expression είναι trivial...

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

$in_url  = '/en_US/root/var/cache/dna/2/100&others=true';
$out_url = preg_replace('~^/?([^/]+)/([^\d]+)/(\d+)/(\d+)(.+)$~', 'i.php?language=$1&category=$2&page=$3&per_page=$4$5', $in_url);
die ($out_url);
...αλλά σε επίπεδο Apache δε γίνεται καθώς το rewriting αφορά τα paths και όχι τα queries.

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

apache rewrite γίνετε ?

Δημοσίευση από pimpogio » 13 Φεβ 2011 17:42

το δοκιμασα ξανα σε apache και δεν μπορω να το κανω...

υπαρχει λυση σε επιπεδο apache οπως να κανω το url:
/en_US/root/var/cache/dna/p/2/100&others=true
ή
/en_US/root|var|cache|dna/2/100&others=true

αλλα εγω θελω να ειναι το url
/en_US/root/var/cache/dna/2/100&others=true
και να ειναι σε επιπεδο apache to rewrite.
Χλωμο να βρεθει λυση..

Σε ευχαριστω για τον κωδικα php αυτο τα κοιταξω σαν
τελευταια λυση αμα αποκλεισω εντελως τον apache...

μετα τι ειναι καλυτερο ?
αυτο
/en_US/root/var/cache/dna/2/100&others=true
ή αυτο
/en_US.root.var.cache.dna.2.100&others=true

Το 1ο εχει μειονεκτημα οτι πρεπει να βαζεις absolute
paths στα resources το 2ο δεν εχει τετοιο προβλημα
αλλα δεν ξερω τι αντιμετωπιση θα του εχει η google

Απάντηση

Επιστροφή στο “Apache, IIS, DNS Servers”

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

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