PDA

Pogčedajte punu verziju : .htaccess - prekid izvršenja rules


godza
26. 10. 2005., 17:23
moj trenutni .htaccess izgleda ovako:
RewriteRule ^admin/(.*) admin.php?route=$1
RewriteRule ^site/(.*) index.php?route=$1
, to radi posao, ali ja bih hteo malo drukcije resenje.

hteo bih nesto da uradim poput ovoga (sad ovo veze sa vezom nema, ali sluzi cisto da vam predocim sta bih hteo da postignem)

if (^admin/(.*)) {
RewriteRule ^admin/(.*) admin.php?route=$1
} else {
RewriteRule ^(.*) index.php?route=$1
}

ako pokusam nesto ovako
RewriteRule ^admin/(.*) admin.php?route=$1
RewriteRule ^/(.*) index.php?route=$1
onda u slucaju da korisnik odradi zahtev /admin/
izvrsice se i prvo i drugo override-ovanje, a to mi nije cilj.

Ima li neko resenje/savet na ovo moje pitanje?

bluesman
26. 10. 2005., 18:53
Ne znam da li si probao sa [L] - to je oznaka da je "last rule"?

godza
26. 10. 2005., 19:13
Ne znam da li si probao sa [L] - to je oznaka da je "last rule"?
hmmmm, nisam, moze neki primer?

robi-bobi
26. 10. 2005., 19:14
evo kako sam ja uradio multipledomain hosting na paketu koji ima samo domain parking:


RewriteCond %{HTTP_HOST} ^(www\.)?nekisajt.com$
RewriteRule ^(.*)$ /nekisajt/$1 [L]

RewriteCond %{HTTP_HOST} ^(www\.)?nekidrugisajt.com$
RewriteRule ^(.*)$ /nekidrugisajt/$1 [L]

bluesman
26. 10. 2005., 19:19
Bas tako :) To samo znaci da ne procesira ostale rules kada dobije "match"

godza
26. 10. 2005., 19:26
odlicno resili ste problem

RewriteRule ^admin/(.*) admin.php?route=$1 [L]
RewriteRule ^/(.*) index.php?route=$1

Hvala Gorane hvala RobbyBobby.

MorenoArdohain
27. 10. 2005., 19:17
Mozda i meni neki pomogne, imam cudan problem sa .htaccess i ovom linijom:

RewriteRule ^proizvodjac/(.*)/(.*)/ /mobilni/index.php?pr=$1 [L]

ako unesem URL nesto kao:
http://www.mojmobilni.com/proizvodjac/11/Sharp/ to radi

ali ako unesem nesto kao:
http://www.mojmobilni.com/proizvodjac/13/LG/ ne radi, dobijam 500 Internal error..

onda sam otkrio da ako unesem bilo sta sto ima po 2 znaka tamo gde su 13 i LG u URL-u, ne radi uopste.. Nema nikakve logike.. Ima li neko ideju?

DOPUNA: Na kraju mi je palo na pamet da testiram taj isti htaccess u lokalu i radi.. Tako da mislim da je u pitanju server issue, upravo sam popunio ticket na sajtu hosting kompanije, pa cu da vidim da li je do njih

bluesman
27. 10. 2005., 20:13
A da stavis uslovno?

RewriteRule ^proizvodjac/(.*)/(.*)?[/]? /mobilni/index.php?pr=$1 [L]

Ne znam, probaj, to mi prvo pada na pamet. Misli da ces imati problem ako neko ukuca:

/proizvodjac/11 (bez slash na kraju)

ili
proizvodjac/11/Sharp (bez slash na kraju)

Mislim da ti 500 error nastaje bas u takvim slucajevima kada fali / na kraju

U svo ovo sto sam napisao nisam siguran, pricam napamet, bez testiranja ne mogu biti siguran 100%

MorenoArdohain
27. 10. 2005., 20:36
A da stavis uslovno?

RewriteRule ^proizvodjac/(.*)/(.*)?[/]? /mobilni/index.php?pr=$1 [L]

Ne znam, probaj, to mi prvo pada na pamet. Misli da ces imati problem ako neko ukuca:

/proizvodjac/11 (bez slash na kraju)

ili
proizvodjac/11/Sharp (bez slash na kraju)

Mislim da ti 500 error nastaje bas u takvim slucajevima kada fali / na kraju

U svo ovo sto sam napisao nisam siguran, pricam napamet, bez testiranja ne mogu biti siguran 100%

Da, znam za to, ja sam samo hteo da pojednostavnim stvari..
Sad sam namestio taj uslovni slash na kraju..

Evo jos primera kad dobijam error:
http://www.mojmobilni.com/proizvodjac/13/LG/
http://www.mojmobilni.com/proizvodjac/12/LG/
http://www.mojmobilni.com/proizvodjac/11/LA/

a ne dobijam kad uradim ovo:
http://www.mojmobilni.com/proizvodjac/13/LG (nema trailing slash na kraju!)
http://www.mojmobilni.com/proizvodjac/11/Sharp/
http://www.mojmobilni.com/proizvodjac/10/SonyEricsson/
itd..

Dakle, rezime, dobijam error samo kad imam nesto ovako:
http://www.mojmobilni.com/proizvodjac/XX/XX/
gde je X slovo ili broj..

U lokalu mi sve izgleda ok, jedino na serveru brlja.. tako da mi se cini da je ipak do hosting kompanije..

Hvala na odgovoru

noviKorisnik
27. 10. 2005., 21:07
Mene buni zašto se to dešava, no bolje je da pokuša da se nađe drugo rešenje.

Šema ide /proizvođac/ pa id proizvođača, a dalje su neka mazanja za pretraživače i nisu bitna. id je broj i on je obavezan, pa bih taj deo krstio sa (\d+), a ono što sledi nije potrebno, znači da je dovoljno samo da dozvolimo da može da postoji sa (.*)

Dakle, možda...
RewriteRule ^proizvodjac/(\d*)(.*) /mobilni/index.php?pr=$1 [L]

MorenoArdohain
30. 10. 2005., 12:02
Problem resen, server issue :)