21st November 2010, 01:16
#4
1 out of 2 members found this post helpful.
asa merge:
Cod:
RewriteRule ^(?:([a-z]{1,2})\/)?(?:([^\/]+)\/)?$ index.php?lng=$1&os=$2
insa atunci cand 'lng' nu va fi prezent in url si vei avea 'os' format tot din una sau doua litere (la fel ca si 'lng') automat el va fi perceput ca si 'lng'. de aceea iti recomand marcarea foarte clara a limbilor posibile (banuiesc ca 'lng' la asta se refera). ceva in genul:
Cod:
RewriteRule ^(?:(en|ro|it|fr)\/)?(?:([^\/]+)\/)?$ index.php?lng=$1&os=$2
22nd November 2010, 17:44
#8
1 out of 1 members found this post helpful.
chiar acum am retestat si functioneaza corect...
url-ul http://www.domeniu.ro/en/windows-xp/ imi returneaza la print_r($_GET): [lng] => en [os] => windows-xp
url-ul http://www.domeniu.ro/windows-xp/ imi returneaza la print_r($_GET): [lng] => [os] => windows-xp
explicatie regula pe scurt:
^ inceput de regula
?: dupa deschiderea primei paranteze ii spune interpretorului sa nu retina regula aflata in acea paranteza (ca si backreference)
(ro|en|it|fr) - ro ori en ori it ori fr (aici regula va fi retinuta pentru ca se afla intr-o paranteza care nu mai are ?: la inceput)
? de dupa inchiderea parantezei inseamna ca regula continuta de aceasta poate exista sau nu (nu este obligatorie)
a doua parte poate fi dedusa 
sper ca am putut sa-ti fiu de ajutor
numai bine
editat: poate ca ai o regula care o rescrie pe aceasta (spuneai ca ai 213 randuri in htaccess)... incearca s-o pui prima si sa-i adaugi flagul [L] pentru a obliga interpretorul sa se opreasca la prima potrivire. ceva in genul
Cod:
RewriteRule ^(?:(en|ro|it|fr)\/)?(?:([^\/]+)\/)?$ index.php?lng=$1&os=$2 [L]
Ultima modificare făcută de ant7; 22nd November 2010 la 17:49.
22nd November 2010, 18:34
#10
1 out of 1 members found this post helpful.

Postat în original de
Mascka
da functioneaza.. dar problema e urmatoarea.. daca accesez domeniul direct ex: domeniu.ro/ se interfereaza cu regula asta si cere os.. automat rezulta 404 pt ca os este null.
nici os si nici lng nu este obligatorie... regula este valabila si functioneaza pentru:
- domeniu.ro/
- domeniu.ro/lng/
- domeniu.ro/lng/os/
- domeniu.ro/os/
probabil de vina este alta regula. cred ca optim ar fi sa refaci regulile (deja sunt prea multe), pentru a nu avea surprize neplacute in viitor...