URL rewrite
4 naročniki
4 naročniki
Kot naslov pove...
Nimam pojma kako naj naredim rewrite...Sem probaval po googlu iskat, probaval razne opcije, brez uspeha...
Skratka, imam dva tipa za rewrite:
- www.domena.com/krneki.php v www.domena.com/krenki/
- www.domena.com//image.php?img=/deals/2012/1110/13525831152394.jpg v www.domena.com/slike/13525831152394.jpg
S tem da so številke poljubna...
Tisto kar sem do sedaj porbaval v .htaccess je bilo ali brez efekta ali Internal Server Error
Ima kdo kak predlog?
Hvala
7 odgovorov
taka vprasanja je najbolje, da naslovis na stackoverflow, bos najhitreje in najkvalitetneje dobil odgovor
Na hitro napisano, probaj če deluje. Ne pozabi nastavit RewriteBase, če slučajno ni.
#rewrite točno določene mape "krneki"
RewriteRule ^krneki\/$ krneki.php [L,NC]
rewrite slike je malo drugačen kot si ti napisal:
www.domena.com/slike/LETO/DATUM/13525831152394.jpg
RewriteRule ^slike\/([0-9]+)\/([0-9]+)\/([0-9]+\.jpg) image.php?img=/deals/$1/$2/$3
Kakšna je napaka? poglej v phpInfo() ali imaš mod_rewrite modul vklopljen.
Tudi če je in v apacheju ni nastavljen "AllowOverride On", ne bo delalo.
v .htaccessu imej na začetku tole:
RewriteEngine on
Rewrite base nastavi na mapo v kateri delaš. Če je to na root-u(sklepam iz tvojega primera), je / v redu. Jaz sem zgornjo kodo testiral in preverjeno deluje.
O mod_rewrite je napisano na tone tutorialov, tako da s tem se mi ne da ubadati,
bi ti pa rad svetoval, da če misliš s php servirati slike ne pozabi v headerju nastaviti ukaze za cache.
Recimo pri meni:
$exp_time = strtotime(CACHE_EXPIRES);
header('Expires: ' . date(DATE_RFC2822, $exp_time));
header('Pragma: cache');
$seconds = $exp_time - time();
header("Cache-Control: public, max-age=$seconds, pre-check=$seconds");
Kjer je CACHE_EXPIRES poljuben string, ki ga zna strtotime() sparsati (npr. 3 days ali 1 week).