DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Regular expression i htaccess (http://www.devprotalk.com/forumdisplay.php?f=41)
-   -   .htaccess problem (http://www.devprotalk.com/showthread.php?t=1610)

Blood 09. 10. 2006. 19:21

.htaccess problem
 
Ovo verovatno ne ide u php, ali ne znam gde drugde da ga stavim, neka moderatori prebace temu gde misle da treba da ide(samo ne u djubre :p)

Evo kratak opis problema, pravim neku scriptu koja treba da bude seo friendly. To sam resio preko .htaccess fajla, evo kako on ozgleda:

Kôd:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+[^/])$ $1/ [R,L]
RewriteRule ^login(.*)/$ /login.php [L]
RewriteRule ^admin/(.*)/$ /admin.php?act=$1 [L]
RewriteRule ^(.*)/$ /index.php?act=$1 [L]

i on radi super, problem nastaje kad se scripta ne nalazi u root-u, vec u nekom subdir-u.
Ja uzmem i prepravim kod da izgleda ovako:

Kôd:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^script/(.+[^/])$ $1/ [R,L]
RewriteRule ^script/login(.*)/$ /login.php [L]
RewriteRule ^script/admin/(.*)/$ /admin.php?act=$1 [L]
RewriteRule ^script/(.*)/$ /index.php?act=$1 [L]

medjutim to ne radi(naravno .htaccess file uploadujem u root/script/ dir), dobijem error 404 za npr http://root/script/test/ dok u lokalu radi savrseno

Da li neko zna gde gresim?

Hvala!

LiquidBrain 09. 10. 2006. 19:54

Lupam sada, ali mozda je problem u

Kôd:

RewriteBase /
probaj sa
Kôd:

RewriteBase /script/
Mozda ima nekog smisla :) A ipak mozda i nema...

oliver 09. 10. 2006. 19:58

ja sam TOTALNI laik za .htaccess, ali, zar ne bi trebalo da u drugom slucaju RewriteBase bude "/script" a ne "/", a RewriteRule-ovi ostaju nepromijeneni, tj:

Kôd:

RewriteBase /script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+[^/])$ $1/ [R,L]
RewriteRule ^login(.*)/$ /login.php [L]
RewriteRule ^admin/(.*)/$ /admin.php?act=$1 [L]
RewriteRule ^(.*)/$ /index.php?act=$1 [L]

unaprijed se izvinjavam ako sam lupio :)

edit prestize me LiquidBrain :)

Petar Marić 09. 10. 2006. 20:03

Probaj:
Kôd:

<IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d

  RewriteRule ^login/$ ./login.php [L]
  RewriteRule ^admin/(.*)/$ ./admin.php?act=$1 [L]

  RewriteRule ^(.*)/$ ./index.php?act=$1 [L]
</IfModule>

Sada bi trebalo da radi nezavisno od toga u koji dir ga strpas (nešto slično tome koristim za moj Django setup na DreamHost-u).

Blood 09. 10. 2006. 20:08

Probao sam i to, ali nije uspelo... :(
Mislim, ne prijavljuje mi 404 vec me baca na http://root/index.php
a probao sam onda i da mu stavim ovako
Kôd:

RewriteEngine On
RewriteBase /script/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^script/(.+[^/])$ $1/ [R,L]
RewriteRule ^script/login(.*)/$ /login.php [L]
RewriteRule ^script/admin/(.*)/$ /admin.php?act=$1 [L]
RewriteRule ^script/(.*)/$ /index.php?act=$1 [L]

A onda sam opet poceo da dobijam 404

Petar Marić 09. 10. 2006. 21:07

Ajd daj malo detaljnije informacije o podešavanjima:
* ime servera
* lokacija web root-a na disku
* relevantnu Virtual Host sekciju - ako postoji
* relativnu putanju do skripti u odnosu na web root na disku
* relativnu putanju do skripti u odnosu na web root za http
* putanje koje pokušavaš da dobiješ
* putanje koje dobijaš, ili grešku ako nju dobijaš
* relativnu putanju do .htaccess fajla u odnosu na web root na disku

I ako nije problem pošalji to za .htaccess koji sam ti dao, da ne analiziram druge.

dejanr 09. 10. 2006. 21:35

Probaj sa:
Kôd:

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
...

A evo i http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html pa kreni redom ...

ivanhoe 09. 10. 2006. 21:41

Ako stavis RewriteBase da ti je script, onda ti ne treba script/ u prvom parametru, jer se to automatski skida. U principu j RewriteBase bitan samo kad se koristi i mod_alias da bi Apache umeo da se snadje gde s sta nalazi, ovako kako ti radis mozes slobodno da ostavis kao u prvom primeru i da onda rewrite-ujes celu putanju.

Dakle, nesto ovako:
Kôd:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^script/(.+)  /$1 [R,L]

RewriteRule ^script/login(.*)        /login.php [L]
RewriteRule ^script/admin/(.*)/?  /admin.php?act=$1 [L]
RewriteRule ^script/(.*)/?            /index.php?act=$1 [L]

Ovo bi moralo da sljaka, mada nisam probao... ako ne bude radilo, probaj da izmenis flagove da budu [R,L] tako da se uradi externi redirect, tako ces da vidis koju adresu on pokusava da dohvati, pa ce ti biti jasno gde je problem..

Ako isprobavas ovo u localu (ili imas pristup httpd.conf na serveru) onda je najbolje da dodas u definiciju virtuelnog hosta:
Kôd:

RewriteLog /neka/putanja/rewrite.log
RewriteLogLevel 5

log level podesi izmedju 2 i 10 na nivo detalja koji ti treba (petica je po meni sasvim dovoljna), pa onda lepo u njemu pogledaj sta se desava korak po korak...

srdjevic 09. 10. 2006. 22:52

Ili mozes da SVE prebacujes na index.php, a da ti on bude switch. Onda u njemu pogledas path koji je trazen, pa mozes da odradis i header(location), a i include. ;-)

Blood 10. 10. 2006. 12:18

Hvala Vam svima na odgovorima, evo kako sam resio problem.

Kôd:

RewriteEngine On
RewriteBase /script/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+[^/])$ $1/ [R,L]
RewriteRule ^login(.*)/$ /script/login.php [L]
RewriteRule ^admin/(.*)/$ /script/admin.php?act=$1 [L]
RewriteRule ^(.*)/$ /script/index.php?act=$1 [L]

Kazu da je jutro pametnije od noci...


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

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.