| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
ShD
Data înscrierii: 19/Noi/2007
Mesaje: 62
|
| Trimis: Lun Noi 19, 2007 12:11 pm Titlul subiectului: Problema mod rewrite |
|
|
Salutare tuturor,
Am si eu o mica si stresanta problema. Cand m-am apucat de programare nu aveam cunostine deloc de mod rewrite si de curand am inceput studiul.
Linkurile mele arata in mod normal de genul: index.php?navmode=eu&game=cs&site=profile&action=gallery&id=1 (am ales unul din cele lungi pentru a evidentia nevoia unui mod rewrite). Acelasi content este afisat si pentru index.php?site=profile... sau celelalte atribute navmode si game.
Dupa tutoriale si manuale citite am facut si partea de mod_rewrite dar am ajuns la o problema. Pentru lungimea maxima scrisa mai sus imi functioneaza un /eu/cs/profile/gallery/1 dar daca ii dau /eu/profile/gallery/1 (sarind parametrul game) am o mica problema la afisare. Am dat un echo $_SERVER si am vazut ca linkul cerut e de fapt index.php?navmode=eu&game=profile&...
As vrea sa va rog sa ma directionati catre un tutorial mai complex sau sa imi dati niste instructiuni pentru ca m-am cam pierdut.
PS: nu ma astept sa imi scrieti voi codul de rewrite ci doar de un tip&trick
Multumesc anticipat, Stelian Mocanita |
|
| Sus |
|
Pirahna
Data înscrierii: 22/Aug/2004
Mesaje: 4339
Locație: la birou
|
| Trimis: Lun Noi 19, 2007 12:27 pm Titlul subiectului: |
|
|
pai mai fa un rewrite rule in care scrii ce se intampla daca sunt mai putine valori ...
adica tu practic ai ...
/eu/cs/profile/gallery/1
/variabila1/variabila2/variabila3/variabila4/variabila5
=> index.php?navmode=$1&game=$2&site=$3&action=$4&id=$5
eh, daca tu scoti una din variabile de genul ...
/eu/profile/gallery/1
nu o sa mai fie 5 valori deci rule-ul tau nu o sa mai mearga ...
deci va trebui sa scrii un rule si pentru asta
index.php?navmode=$1&game=default...etc
sau sa faci un redirect.
default poti sa-l setezi si din php (jocul default, valoarea default pt game), si in .htaccess sa nu il mai pui ca game=ceva. |
|
| Sus |
|
ShD
Data înscrierii: 19/Noi/2007
Mesaje: 62
|
| Trimis: Lun Noi 19, 2007 12:32 pm Titlul subiectului: |
|
|
Pirahna a scris: pai mai fa un rewrite rule in care scrii ce se intampla daca sunt mai putine valori ...
adica tu practic ai ...
/eu/cs/profile/gallery/1
/variabila1/variabila2/variabila3/variabila4/variabila5
=> index.php?navmode=$1&game=$2&site=$3&action=$4&id=$5
eh, daca tu scoti una din variabile de genul ...
/eu/profile/gallery/1
nu o sa mai fie 5 valori deci rule-ul tau nu o sa mai mearga ...
deci va trebui sa scrii un rule si pentru asta
index.php?navmode=$1&game=default...etc
sau sa faci un redirect.
default poti sa-l setezi si din php (jocul default, valoarea default pt game), si in .htaccess sa nu il mai pui ca game=ceva.
Default nu prea il pot seta pentru ca sunt prea multi utilizatori care au ca bookmark respectivul joc ca atat ii intereseaza dar asta nu e problema.
Practic va trebui sa rescriu regulile pentru fiecare situatie admisa de php daca am inteles corect. Mai citisem pe undeva ca si ordinea in care apar regulile are o relevanta in sensul ca e indicat sa le pun in ordine dupa numarul de variabile. Este adevarat sau era doar un tutorial scris de un cunoscator ca mine? :) |
|
| Sus |
|
Pirahna
Data înscrierii: 22/Aug/2004
Mesaje: 4339
Locație: la birou
|
| Trimis: Lun Noi 19, 2007 1:20 pm Titlul subiectului: |
|
|
E adevarat, trebuie aranjate in ordine ...
La partea cu php-ul si situatiile ... e normal sa ai grija de fiecare situatie posibila (e mai secure si mai inteligent) cand scrii cod.
Joaca-te si tu cu ele, si vezi care e treaba ... incearca mai multe path-uri, muta-le ... e mai bine sa te prinzi singur care e treaba decat sa-ti zicem noi. |
|
| Sus |
|
ShD
Data înscrierii: 19/Noi/2007
Mesaje: 62
|
| Trimis: Lun Noi 19, 2007 1:25 pm Titlul subiectului: |
|
|
| Mersi mult de sfaturi, ma apuc de voodoo in cateva ore cand ies de la munca si revin cu versiunea finala :) Nu ma las pana nu imi iese :D |
|
| Sus |
|
andrei009
Data înscrierii: 16/Mar/2007
Mesaje: 210
|
| Trimis: Lun Noi 19, 2007 2:30 pm Titlul subiectului: |
|
|
inca o idee, poti face si asa
Cod: RewriteRule ^([a-zA-Z0-9/]+)$ index.php?q=$1 [L]
iar in php ai variabila $_GET['q'] unde gasesti tot ce e introdus in adresa
de ex intri pe www.site.ro/eu/cs/profile/gallery/1 in variabila ai eu/cs/profile/gallery/1, dai un explode() la / si obtii un array
Cod: Array (
1 => "eu",
2 => "cs",
etc
)
asa e mult mai simplu si nu mai trebuie sa mai modifici .htaccess-ul pentru a adauga alte reguli cand ai alt url |
|
| Sus |
|
ShD
Data înscrierii: 19/Noi/2007
Mesaje: 62
|
| Trimis: Lun Noi 19, 2007 5:03 pm Titlul subiectului: |
|
|
| deja devine voodoo mod_rewriteul asta. Care e diferenta in render time pentru cele doua? Pot calcula usor pentru explode dar mai putin pentru rewrite rules. |
|
| Sus |
|
ShD
Data înscrierii: 19/Noi/2007
Mesaje: 62
|
| Trimis: Vin Noi 23, 2007 2:38 pm Titlul subiectului: |
|
|
Eeh acum am o noua problema si iar am ajuns sa urasc conceptul de mod_rewrite.
Am doua linkuri cu acelasi numar de parametri dar diferiti intre ei:
index.php?navmode=ro&game=cs -> ro/cs/
index.php?navmode=ro&site=news -> ro/news/
Gues what? doar una din ele functioneaza, si anume cea pe care o pun prima.
adica daca fac rewrite pentru ro/cs/ la ro/news/ imi vede ca link index.php?navmode=ro&game=news ceea ce nu e tocmai bine. Ideeas? |
|
| Sus |
|
Quber
Data înscrierii: 27/Iun/2006
Mesaje: 781
Locație: localhost
|
| Trimis: Vin Noi 23, 2007 3:14 pm Titlul subiectului: |
|
|
Incearca asha nus sigur dar sper sa mearga :)
Cod: RewriteRule ro/cs(/?) index.php?navmode=ro&game=cs [L]
RewriteRule ro/news(/?) index.php?navmode=ro&site=news [L] |
|
| Sus |
|
ShD
Data înscrierii: 19/Noi/2007
Mesaje: 62
|
| Trimis: Vin Noi 23, 2007 3:23 pm Titlul subiectului: |
|
|
| hope it works :) mersi |
|
| Sus |
|
kleampa
Data înscrierii: 10/Iul/2005
Mesaje: 2041
Locație: Bucuresti
|
| Trimis: Vin Noi 23, 2007 4:51 pm Titlul subiectului: |
|
|
in loc de L pune QSA iar la ultima regula din htacces pune QSA,L
L-u se pune doar la ultima regula |
|
| Sus |
|
Quber
Data înscrierii: 27/Iun/2006
Mesaje: 781
Locație: localhost
|
| Trimis: Vin Noi 23, 2007 5:21 pm Titlul subiectului: |
|
|
Eu de multe ori folosesc [L] - Last Rule se poate de folosit si [QSA,L]
Mai multe detalii Aici |
|
| Sus |
|
ShD
Data înscrierii: 19/Noi/2007
Mesaje: 62
|
| Trimis: Sâm Noi 24, 2007 1:22 am Titlul subiectului: |
|
|
Ca sa imi raspund la intrebarea de mai sus cu timpii de acces din apache mod_rewrite si php clean urls:
Am facut intregul re-write ai am trecut pe el. Din motive evidente am zis sa ma uit si eu ce se intampla, un log, o resursa, o aluna.
Pana la 1200 utilizatori simultan pe site toate bune si frumoase. Fericit de divina-mi realizare mi-am facut o cafea, am fumat o tigara am vb la un telefon cand ma suna un client nemultumit: Site-ul se misca infect.
Trag cu ochiul la resurse si tragedie: apache-ul manca mai multa memorie decat poate suporta o placa de baza. Prin urmare undo la tot si incercam cu php ;) |
|
| Sus |
|
Pirahna
Data înscrierii: 22/Aug/2004
Mesaje: 4339
Locație: la birou
|
| Trimis: Sâm Noi 24, 2007 1:51 am Titlul subiectului: |
|
|
nu stiu de ce dar tind sa dau vina pe tine ...
si pe fisierul creat de tine.
adica apache-ul nu mananca multa memorie decat daca e neaparat nevoie.
daca ai un htaccess de 150 de kb la fiecare accesare ... e o problema serioasa.
si daca chiar apache reuseste sa pape memorie, eu zic ca se poate seta astfel incat acea memorie care nu mai e ocupata sa fie eliberata (ma indoiesc eu ca 4-8 GB de ram sunt umpluti de un apache cu 10000 de conexiuni). |
|
| Sus |
|
ShD
Data înscrierii: 19/Noi/2007
Mesaje: 62
|
| Trimis: Sâm Noi 24, 2007 2:11 am Titlul subiectului: |
|
|
| pana la o solutie fiabila las linkurile greoaie :) ma mai joc cu apache as we speak dar nu cred ca voi ajunge prea departe. |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |