Šta je novo?

mod_rewrite problem

Vlasterx

Čuven
Učlanjen(a)
23.01.2004
Poruke
4,992
Poena
740
Krenuo sam da razmišljam malo u smeru optimizacije linkova za pretraživače i cilj mi je da umesto linkova tipa
Kod:
www.sajt.com/index.php?language=english&category=3&item=2
dobijem preko mod rewrite-a linkove koji su ovog tipa
Kod:
www.sajt.com/english/software/photoshop/

Tu postoje 3 GET varijable (language, category i item) koje bi se generisale preko PHP-a iz MySQL baze.

E sad, mod rewrite lepo radi posao kada je ceo link popunjen kako treba. Evo primera .htaccess koda:

Kod:
RewriteEngine on
RewriteRule ^([^/\.]*)/([^/]*)/([^/]*)/$? index.php?language=$1&category=$2&item=$3 [L]

Međutim, ako nastane problem, pa posetilac sajta ukuca npr.
Kod:
www.sajt.com/english/software/

sajt se zakuca jer link nije kompletan. Fali mu treća varijabla "item".

Ono što mene zanima je kako da u slučaju takvog nekompletnog linka posetilac bude preusmeren na neku drugu stranu? Npr. na root sajta?

Pokušao sam sa

Kod:
RewriteEngine on
RewriteRule ^([^/\.]*)/([^/]*) index.php?language=$1
RewriteRule ^([^/\.]*)/([^/]*)/([^/]*)/$? index.php?language=$1&category=$2&item=$3 [L]

Međutim to ne radi kako treba jer se onda ne procesuira drugo pravilo u slučaju da se link unese kako treba.
Kako da sredim ovaj problem? Kako da kažem Apache serveru da ako posle drugog slasha ništa nije uneto da koristi prvo pravilo, a ako jeste uneto da koristi drugo?
 
Poslednja izmena:
o bože... samo je u redosledu pravila problem :-/

Kod:
RewriteEngine on
RewriteRule ^([^/\.]*)/([^/]*)/([^/]*)/$? index.php?language=$1&category=$2&item=$3
RewriteRule ^([^/\.]*)/([^/]*) index.php?language=$1 [L]
 
Meni se desva ponekad. Da ne vidim problem odmah. I tek kada pocnem da pisem za pomoc, skontam sta je resenje, razmisljajuci o tome kako treba da objasnim problem. 🙂
 
Lomio sam se jedno sat vremena oko toga u čemu bi mogao da bude problem. Postavio sam poruku ovde i posle 20ak minuta mi je sinulo gde je greška. Glupo mi je da odgovaram sam sebi, al eto, bolje da napišem ukoliko neko drugi bude imao sličan problem. 😉 Najgore je kad ti stane mozak kod nekog banalnog problema.

I da, ne valja nikako ostaviti da link od početka bude dinamički
Kod:
RewriteRule ^([^/\.]*)/([^/]*) index.php?language=$1 [L]
jer se dešavaju razni nepredviđeni problemi. Zato je bolje napisati
Kod:
RewriteRule ^nešto/([^/\.]*)/([^/]*) index.php?language=$1 [L]
 
Poslednja izmena:
moze mala pomoc sa Rewrite modulom

napravio sam .htaccess fajl sa

RewriteEngine On
RewriteBase /
RewriteRule ^ovdenesto/?$ page2.php [NC,L]

kada probam iz browsera dobijem 404 🙁 page2.php not found
a .htaccess i page2.php su istom folderu

gde gresim?
 
Poslednja izmena:
resen problem, iz meni nepoznatog razloga on je taj page2.php trazio u prethodnom direktorijumu a ne u tom aktivnom 🙁 nasao u logu

pozz
 
Nazad
Vrh Dno