PDA

Pogčedajte punu verziju : mod_rewrite radi na statičkim fajlovima, ne i na dinamičkim


Miroslav
23. 06. 2009., 15:05
Ovako izgleda moj .htaccess fajl:

ErrorDocument 404 /404.php

RewriteEngine on
RewriteRule /shop/?sif=109 /shop/kategorija/109
RewriteRule index03.html index04.html


Problem je što RewriteRule radi kad je u pitanju preusmeravanje sa index03.html -> index04.html, dok u prvom slučaju ne.

Da li možda neko zna u čemu je problem?

Unapred hvala.

Peca
23. 06. 2009., 15:29
verovatno u znaku '?' koji u regular-expression oznacava 'moguci karakter' :)
probaj da ga escape-ujes sa \?

znaci:
RewriteRule /shop/\?sif=109 /shop/kategorija/109

mileusna
23. 06. 2009., 15:39
Za svaki slučaj isključi MultiViews opciju na Apaču, ona je najčešći razlog za pravljenje nesporazuma.

miks
24. 06. 2009., 08:17
Ovako izgleda moj .htaccess fajl:

ErrorDocument 404 /404.php

RewriteEngine on
RewriteRule /shop/?sif=109 /shop/kategorija/109
RewriteRule index03.html index04.html


Problem je što RewriteRule radi kad je u pitanju preusmeravanje sa index03.html -> index04.html, dok u prvom slučaju ne.

Da li možda neko zna u čemu je problem?

Unapred hvala.

Mislim da bi trebalo da bude nesto slicno sledece:


RewriteRule /shop/\?sif=(\d+) /shop/kategorija/$1 [NC,L]

Miroslav
24. 06. 2009., 10:23
Nažalost ništa od ovoga neće da radi. Samo mi izbaci 404 grešku.

Kad izbacim "MultiViews"
Options -MultiView
onda mi javi 500 grešku.

U svakom slučaju problem sam rešio u samom PHP-u:
header("HTTP/1.1 301 Moved Permanently");
header("Location: novi_url");

Kažu da je i ova metoda "Google friendly".
Međutim, malo me je zbunilo što stara strana koja ima PR 3 izgubi taj PR pri redirekciji na novu, a kaže se da 301 redirekcija služi najviše za to... da se zadrži stari PR.

Ono što mi je još zanimljivije kad uradim samo običan header
header("Location: novi_url");
dakle bez 301, PR ostane isti. Samo što u ovom slučaju imamo dupliran sadržaj. :(

mileusna
24. 06. 2009., 13:56
Mislim da ne možeš tako da izbaciš MultiViews, pogledaću u toku dana. Da li je to dedicated server, imaš li pristup httpd.conf?

Miroslav
25. 06. 2009., 11:23
Mislim da jeste "dedicated".

mileusna
25. 06. 2009., 13:27
Onda isključite MultiViews u httpd.conf ili već gde je konfigurisan sajt o kome pričaš, ako je ubačen.

Miroslav
26. 06. 2009., 11:36
Hvala svima na odgovorima.
Da nebi više mučio administratore ovde po firmi, problem sam rešio u samom PHP-u:
header("HTTP/1.1 301 Moved Permanently");
header("Location: novi_url");

bOkIcA
26. 06. 2009., 13:51
Tu je jako diskutabilo sta si u stvari hteo da postignes.

Da li zelis da ti linkovi budu /shop/kategorija/109 a da ih interno docekuje program pod /shop/index.php?sif=109 ?

Ako je tako onda ti treba nesto poput:
RewriteRule /shop/kategorija/(\d+) /shop/index.php?sif=$1 [NC,L]

Ako zelis da radis stalnu redirekciju linkova onda koristis flag [R=301,L]
gde R znaci da je u pitanju redirekcija a L znaci poslednja stavka.
RewriteRule index03.html index04.html [R=301,L]

Iskreno, deluje mi kao da si obrnuo stvari.

Miroslav
08. 07. 2009., 18:13
Da nebih otvarao novu temu:

Imam problem da mi

nekisajt.com/test/
bude isto što i
nekisajt.com/test.php

Pokušavao sam da u .htaccess ubacim


<Files test>
ForceType application/x-httpd-php
</Files>


ali ne radi. Ovo sam inače pročitao ovde:
www.sitepoint.com/article/search-engine-friendly-urls/

Dakle samo želim da sklonim ovo .php iz adrese.
Inače do sada nisam imao problem sa ovim stvarima. Mislim da se ovo može podesiti i u http.conf. Tako sam barem radio kod sebe na localhost, ali pošto je ovo na hosting provajderu nemogu ništa više da uradim osim u .htaccess.

Ima li neko rešenje?