DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Regular expression i htaccess (http://www.devprotalk.com/forumdisplay.php?f=41)
-   -   mod_rewrite radi na statičkim fajlovima, ne i na dinamičkim (http://www.devprotalk.com/showthread.php?t=7626)

Miroslav 23. 06. 2009. 15:05

mod_rewrite radi na statičkim fajlovima, ne i na dinamičkim
 
Ovako izgleda moj .htaccess fajl:
Kôd:

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

Citat:

Originalno napisao Miroslav (Napišite 70957)
Ovako izgleda moj .htaccess fajl:
Kôd:

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:

Kôd:

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"
Kôd:

Options -MultiView
onda mi javi 500 grešku.

U svakom slučaju problem sam rešio u samom PHP-u:
Kôd:

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
Kôd:

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:
Kôd:

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:
Kôd:

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.
Kôd:

RewriteRule index03.html index04.html [R=301,L]
Iskreno, deluje mi kao da si obrnuo stvari.


Vreme je GMT +2. Trenutno vreme je 07:13.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.