PDA

Pogčedajte punu verziju : .htaccess - rewrite (permalink)


User
15. 01. 2007., 14:42
Moze li mi neko pomoci u vezi ovoga:

RewriteEngine On
Options +Followsymlinks
RewriteBase /stranice/
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.* - [L,QSA]
RewriteRule ^vesti/vest/(.+) /stranice/vesti/index.php#perm$1 [L]

Dakle, na stranici index.php imam anchore koji vode do vesti i koji se imenuju po nazivu vesti. Rewrite radi, prikazuje mi pravu stranicu, ali ne odlazi na anchor. U cemu je problem?

Ilija Studen
15. 01. 2007., 14:48
Browser uopšte nije svestan URL-a sa kojim je originalni URL prepisan tako da ne može da zna anchor. Da bi radilo tako kako si opisao treba da staviš anchore na originalne linkove...

User
15. 01. 2007., 15:13
Anchori postoje u originalnom URLu. Nasao sam da mod_rewrite izbacuje # znak i da se to resava [NE] flagom. Sto sam i uradio. Ali i dalje ne radi? Ako dodam jos i [R] flag, sve radi savrseno, ali izvrsi redirekciju, sto ja ne zelim.

User
15. 01. 2007., 16:12
da budem konkretniji:

Ovo radi (sa nezeljenim efektima):
RewriteEngine On
Options +Followsymlinks
RewriteBase /stranice/
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.* - [NE,L,QSA]
RewriteRule ^vesti/vest/(.+) /stranice/vesti/index.php#perm$1 [NE,L,R]

Ovo NE radi:
RewriteEngine On
Options +Followsymlinks
RewriteBase /stranice/
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.* - [NE,L,QSA]
RewriteRule ^vesti/vest/(.+) /stranice/vesti/index.php#perm$1 [NE,L]

ivanhoe
15. 01. 2007., 16:49
uf, moras da malo bolje razumes tehnologiju koju pokusavas da koristis.

Browser je taj koji skroluje stranu na anchor. S druge strane, kao sto Ilija vec rece, rewrite se radi interno u apachu, browser za to ne zna. [R] flag radi spoljni redirekt, pa zato browser zna za anchor, pa zato skroluje stranu.

Odnosno, da skratim pricu, ne moze to sto ti hoces. Ako zelis da sakrijes anchor u address baru browsera, koristi frejmove..

User
16. 01. 2007., 00:42
OK. Razumem ja da je client side kada se poziva anchor. Samo sam mislio da apac prosledi # zahtev browseru. Posto u dokumentaciji mod_rewritea ima odeljak koji se bavi anchor handlingom, i kao napomenu su stavili da se bas zbog toga koristi [NE] flag.

Ali vise nije bitno, resio sam problem na drugi nacin...

ivanhoe
16. 01. 2007., 06:08
da, ali ta napomena se odnosi na spoljni redirect sa [R] flagom. Tu se [NE] koristi da bi se sprecilo escapeovanje # sa %23. Kod internih redirekta anchor naprosto nema smisla, posto ne postoji nikakav poseban "# zahtev", browser naprosto pogleda url, pa ako ima #foo u sebi onda potrazi taj foo anchor. Ako se url u address baru nije promenio (jer je redirekt interni unutar apacha) onda browser nema nacina da zna da ti hoces da on skroluje stranu.