DevProTalk

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

Nemanja Avramović 27. 07. 2007. 10:25

Problem relativnih putanja
 
Imam jedan mali problemčić sa relativnim putanjama. Kapiram da je lako da se reši (svi su uspeli to da reše :D) ali ja ne nađoh rešenje. I nemojte da se smejete ako je lako :P

Ako npr. imam ovakav .htaccess fajl:

Kôd:

RewriteEngine on
RewriteRule ^category/(.*)$ category.php?id=$1

...dešava mi se kada pozovem sajt.com/category/2 da mi sve slike i css fajlove browser traži u npr. sajt.com/category/style.css

Kako da mu kažem da ipak treba da traži to u sajt.com/style.css

lopkiju 27. 07. 2007. 10:33

U <head> tagu dodaj <base href="sajt.com" />

Za ASPNET radi, trebalo bi i za PHP :).

Thanks to IgorHW aka Bone Collector :).

Dragan Babić 27. 07. 2007. 10:34

Kôd:

<style type="text/css" media="screen,projection">@import "/css/style.css";</style>

Dragan Babić 27. 07. 2007. 10:35

Batali base, samo pocni putanju sa slashom i on krece od roota.

centaur 27. 07. 2007. 10:41

Koristi apsolutne putanje i do slika i do CSS-a i neće biti problema.

Nemanja Avramović 27. 07. 2007. 15:42

Eh, pa znam i ja tako, kad koristim apsolutne putanje :P

Mislio sam da ima neko rešenje da ne moram da menjam putanje do fajlova (na postojećem sajtu, na budućim sajtovima ću paziti kako dovlačim slike/stilove/whatever). Ovo sa base href mi se sviđa kako zvuči, videću da li valja.

Hvala svima na odgovorima.

ivanhoe 27. 07. 2007. 15:49

stvar je extra prosta, sve slike koje su ubacene direktno u HTML se gledaju u odnosu na tu html stranu. Sve slike koje su ubacene preko CSS-a se gledaju u odnosu na taj stylesheet fajl u kome su zadate. Znaci ako imas stylesheet /style/default.css i u njemu: background-image: url(foo/bar.jpg); to u stvari znaci da ucitavas sliku koja se nalazi u /style/foo/ dir-u

Znaci imas opciju ili apsolutnih putanja kao sto vec rekose ljudi ili relativnih putanja uz upotrebu ../ oznake za parent folder (tipa u onom primeru od malopre url(../foo/bar.jpg) bi dalo sliku koja se nalazi u /foo folderu)

IgorHW 27. 07. 2007. 18:34

Problem sa ../ je sto za svaku stranicu zasebno morate da razmisljate koliko ../ da stavite, drugi problem moze da bude ako se jedna stranica koristi u vise virtuelnih putanja, npr:
RewriteRule ^category/users_favorite/(.*)$ category.php?id=$1&fav=true
RewriteRule ^category/(.*)$ category.php?id=$1
u ovom gore slucaju ce upotreba ../ da pravi probleme jer nema nacina da odredite kad treba koliko ../ da se ubaci pre putanje.

Ja savetujem base tag.



Ovo sto je Bojan napisao: "Batali base, samo pocni putanju sa slashom i on krece od roota." nisam isprobao ali ne vidim kako to moze da radi, koliko znam slash na pocetku ne oznacava root.

misk0 27. 07. 2007. 21:29

Citat:

Originalno napisao IgorHW (Napišite 39474)
Ovo sto je Bojan napisao: "Batali base, samo pocni putanju sa slashom i on krece od roota." nisam isprobao ali ne vidim kako to moze da radi, koliko znam slash na pocetku ne oznacava root.

Vjerovatno je mislio na 'root' tj osnovni folder sajta.

IgorHW 27. 07. 2007. 21:48

Znam da je to mislio ali moje pitanje je da li to funkcionise?

MorenoArdohain 27. 07. 2007. 21:57

^ Funkcionise.

IgorHW 27. 07. 2007. 22:11

Evo sad sam isprobao u firefoxu, radi da ali ne onako kako bih ja zeleo tj. ne oznacava root sajta nego root domena, tako da donekle moze da se iskoristi ukoliko imate svoj domen a ne nesto tipa www.googlepages.com/vassajt/.


Ako imate http://www.domen.com a na vasem racunaru http://localhost/domen
to onda otezava razvijanje aplikacija jer vam na lokalu nece raditi uopste. Ja i dalje ostajem pri starom dobrom base href tagu ;)

MorenoArdohain 27. 07. 2007. 22:14

^ Prosto mapiraj domen na localhost i resen problem.

IgorHW 27. 07. 2007. 22:31

Da mapiram www.domen.com na http://localhost/domen? Kako to da uradim?
Ako mapiram domen.com na localhost opet imam domen.com/domen i nista mi ne vredi.

A cak i da mogu to da uradim opet ostaje problem sto onda ne mogu da vidim pravi sajt vec samo moj lokalni na masini.

MorenoArdohain 27. 07. 2007. 22:37

Ne tako kako si rekao, vec pravis virtual sites koji su mapirani na direktorijume na localhostu.
Googlaj malo, zahteva samo par izmena u httpd.conf i HOSTS fajlu (pretpostavljam da koristis Windows i Apache).

I drugo, ne moras staviti pravi domen, vec nesto tipa www.test123.com

kodi 28. 07. 2007. 00:24

Citat:

Originalno napisao IgorHW (Napišite 39496)
Da mapiram www.domen.com na http://localhost/domen? Kako to da uradim?
Ako mapiram domen.com na localhost opet imam domen.com/domen i nista mi ne vredi.

A cak i da mogu to da uradim opet ostaje problem sto onda ne mogu da vidim pravi sajt vec samo moj lokalni na masini.

prvo se malo informisi ....:1014:


ja sve sajtove radim ovako
ako radim www.sajt.com u lokalu je www.sajt.dev
uvek apslutne putanje, i nema problema, radi rewite, rade ajax zavrzlame, moze i pod winu i pod *nix-u .... nema apsolutno nikakvih problema.

IgorHW 28. 07. 2007. 19:10

Citat:

Originalno napisao MorenoArdohain (Napišite 39497)
Ne tako kako si rekao, vec pravis virtual sites koji su mapirani na direktorijume na localhostu.
Googlaj malo, zahteva samo par izmena u httpd.conf i HOSTS fajlu (pretpostavljam da koristis Windows i Apache).

Znam kako se edituje hosts fajl ali nisam znao da moze da se mapira na neki poddirektorijum tipa localhost/nekimojssajt i to sam upravo probao i to bez uspeha.
Koristim IIS 6.0 i asp.net.


Citat:

Originalno napisao MorenoArdohain (Napišite 39497)
I drugo, ne moras staviti pravi domen, vec nesto tipa www.test123.com

OK, toga se nisam setio.

IgorHW 28. 07. 2007. 19:16

Citat:

Originalno napisao kodi (Napišite 39502)
prvo se malo informisi ....:1014:

U vezi sa cim da se informisem? Zato valjda sluzi ovaj forum :)

Citat:

Originalno napisao kodi (Napišite 39502)
ja sve sajtove radim ovako
ako radim www.sajt.com u lokalu je www.sajt.dev
uvek apslutne putanje, i nema problema, radi rewite, rade ajax zavrzlame, moze i pod winu i pod *nix-u .... nema apsolutno nikakvih problema.

Mozes na ovaj nacin da radis na vise sajtova? Absolutne ili relativne, kako mozes stavljati absolutne ako imas dve razlicite adrese, jednu na netu i drugu lokalnu?

Pedja 28. 07. 2007. 20:14

Stavi

<base href="<?php "http://" . $_SERVER['HTTP_HOST'] . str_replace('\\', '/', dirname ($_SERVER['SCRIPT_NAME'])) ?>" />

Pa neces morati da mislis o promenjenom domenu.

U jednom CMS koji sam radio sam ovo resio tako sto sam u letu preracunavao sve putanje i menjao ih. Tako sam mogao da template editujem u DreamWeaver-u u vizuelnom rezimu jer su svi elemnti adresirani relativno na editovani dokument, a kada sajt ucita template on mu izmeni sve relativne putanje i sve lepo funkcionise i na sajtu.

ivanhoe 29. 07. 2007. 06:14

Citat:

Originalno napisao IgorHW (Napišite 39522)
Absolutne ili relativne, kako mozes stavljati absolutne ako imas dve razlicite adrese, jednu na netu i drugu lokalnu?

apsolutna putanja ti je /pera/zika/mika.htm, ne treba domen da bude ukljucen u putanju. I onda mozes da selis sajt kako volis, sto je bitno ne samo zbog prebacivanja iz lokala na server, nego i zbog eventualne promene servera jednog dana.

Uzgred niko te ne sprecava da pomocu hosts fajla over-rajdujes bilo koji domen, ukljucujuci i onaj pravi koji ces koristiti na serveru. Znaci stavis u hosts liniju:
127.0.0.1 yahoo.com
i cepas, browser ce pokusavati da nadje yahoo u lokalu. Znaci teorijski nije nikakav problem da razvijas u lokalu i na serveru koristeci identican domen (mada je nepotrebno jer sa apsolutnim putanjama sve sasvim fino radi i sa razlicitim domenima)

IgorHW 29. 07. 2007. 11:06

Ne, to sto si ti napisao je relativna putanja. Apsolutne putanje moraju da poseduju kompletnu adresu nekog fajla na internetu ukljucujuci domen.

lopkiju 29. 07. 2007. 11:16

@ Ivanhoe

Slazem se sa Igorom.
To sto si naveo je relativna putanja, a ne apsolutna...

MorenoArdohain 29. 07. 2007. 11:44

^ Obojica ste u krivu, Ivanhoe pravo zbori.

/something/somefile.html je apsolutna putanja (u odnosu na tekuci domen), kao i http://www.domain.com/something/somefile.html

something/somefile.html je relativna putanja, u odnosu na tekuci direktorijum.

Imate na google gomilu primera.

noviKorisnik 29. 07. 2007. 12:06

Još jedan glas za ajvanhoa :-)

IgorHW 29. 07. 2007. 12:43

OK pogledao sam kako je po standardu i moja je greska, putanje koje pocinju sa / se definisu kao apsolutne.

Medjutim, idalje mislim da ja to ne mogu da upotrebim u mom slucaju (IIS), shvatam da je ovo forum za apache server i da vi to uspesno koristite i da ste dali primere za to tako da nema potrebe da raspravljamo vise o ovome jer izgleda za apache moze da se upotrebi. I vise mi se svidja nacin koji je opisao kodi, da u lokalu koristim .dev ali ja ne mogu tako da koristim.

Nemanja Avramović 29. 07. 2007. 12:51

U kakva se diskusija razvila :)

Sviđa mi se ono što Peđa reče:
PHP kôd:

<base href="<?php "http://" $_SERVER['HTTP_HOST'] . str_replace('\\''/'dirname ($_SERVER['SCRIPT_NAME'])) ?>" />


Pedja 29. 07. 2007. 13:11

Samo da dopunim:

Kôd:


//
// function url_root ()
// Return root level of site
// This works if function is called from script which is in the root of the site,
// or if script is included by other script which is in the root.
//
function url_root() {

        $m_result = "http://" . $_SERVER['HTTP_HOST'] . str_replace('\\', '/', dirname ($_SERVER['SCRIPT_NAME']));

        if (substr($m_result, -1,1) !== "/"){
                $m_result .= '/';
        }

        return $m_result;

}

ne bi bio PHP to sto jeste da je kozistentan :) Razlicito tretira root url i poddirektorijume tako da je moralo jos malo koda da se doda.

Imas srece sto se i ja bas bakcem sa istim problemom. Ideja sa <base href= > koja je izneta ovde mi se bas potrefila tako da mi je sad stvar mnogo jednostavnije od umetanja apsolutnih putanja za ama bas sve na strani.

MorenoArdohain 29. 07. 2007. 14:27

Citat:

Originalno napisao IgorHW (Napišite 39544)
Medjutim, idalje mislim da ja to ne mogu da upotrebim u mom slucaju (IIS), shvatam da je ovo forum za apache server i da vi to uspesno koristite i da ste dali primere za to tako da nema potrebe da raspravljamo vise o ovome jer izgleda za apache moze da se upotrebi.

Za svaki Web Server postoji ta mogucnost, za IIS evo hinta: iisweb. Procackaj malo na MS sajtu.

kodi 29. 07. 2007. 18:57

Citat:

Originalno napisao Pedja (Napišite 39546)
Ideja sa <base href= > koja je izneta ovde mi se bas potrefila tako da mi je sad stvar mnogo jednostavnije od umetanja apsolutnih putanja za ama bas sve na strani.

laksha zato sto manje moras da menjas postojece skripte, ili ???

apsolutna putanja je jednostavno najbolja
- nema brige oko imena domena *
- nema dodatnog koda koji proverava gde si *
- radi svuda



* a i ako treba, lako se dodaje :)

ivanhoe 29. 07. 2007. 20:32

igore, with all due respect, ovo spada u neke osnove, ono sta je URI, a sta URL, sta su relative a sta apsolutne putanje, apsolutno je neophodno da se to razume, da bi moglo da se radi... tako da procitaj malo o tome, ima puno textova na netu koji to lepo objasnjavaju...

i naravno to mozes da koristis na svakom serveru,posto se apsolutne putanje u web space-u gledaju u odnosu na web root, znaci nebitno je da li je windows ili linux, putanje su iste i svaki web server to ume da koristi...

IgorHW 29. 07. 2007. 20:32

Napravio novi sajt u IIS-u, dodao domen u hosts file i morao sam da promenim putanju u VS-u zbog debugera, za sada izgleda da ce sve raditi kako treba.

Hvala svima na trudu i strpljenju :)

IgorHW 29. 07. 2007. 23:00

Citat:

Originalno napisao ivanhoe (Napišite 39552)
igore, with all due respect, ovo spada u neke osnove, ono sta je URI, a sta URL, sta su relative a sta apsolutne putanje, apsolutno je neophodno da se to razume, da bi moglo da se radi... tako da procitaj malo o tome, ima puno textova na netu koji to lepo objasnjavaju...

Uh, iskreno nije nephodno da se to razume da bi se radilo. Pogotovo kada radis na potpuno drugaciji nacin tj. koristeci BASE tag a meni je bio potreban BASE tag zbog dve razlicite adrese i tek kada je MorenoArdohain napisao iisweb, onda sam malo detaljnije pogledao koje mogucnosti nudi IIS i odradio stvari na drugaciji nacin i tek mi to dozvoljava da koristim slash na pocetku linkova.

I moras priznati da je apsolutni link koji pocinje sa slashom ustvari relativan u odnosu na domen te otuda konfuzija.
Jeste da ima puno tekstova na netu ali vecina to pogresno objasnjava. Prvi rezultat na google-u je ova stranica http://www.webreference.com/html/tutorial2/3.html koja navodi URL sa slashom na pocetku kao relativan.

Pedja 30. 07. 2007. 01:06

Citat:

Originalno napisao kodi (Napišite 39551)
laksha zato sto manje moras da menjas postojece skripte, ili ???

apsolutna putanja je jednostavno najbolja
- nema brige oko imena domena *
- nema dodatnog koda koji proverava gde si *
- radi svuda



* a i ako treba, lako se dodaje :)

Ne bas. Ono sto sma vec napravio, tu sam resio problem putanja. Ovo sa <base href > mi se cini kako dost zgodno i jednostavno resenje koje uopst epojednostavljuje svo kodiranje.

Ne slazem se sa tobom po pitanju apsolutnih putanja. Kada pravim neku web apliakciju trudim se da bude sto univerzalnija i sto manje zahtevna a jedna od uslova je obicno i taj da apliakcija radi kako god da je instaliras, da li u root ili u poddirektorijum.

Navikao sam da postujem pravilo da se svaki spoljni dokument u HTML-u referencira relativno, jer je to prirodan i lako portabilan nacin. ne jednom mi se deislo da sam sajt koji je zapocet kao poddirektorijum na nekom domenu, posle par godina premestim na zaseban domen. moj pristup omogucava da je preseljenje vrlo jednostavno, a cesto i ne moram da preseljavam nego samo zalepim domen na postojeci poddirektorijum drugogo domena i to radi i na stari i na novi nacin.

Inace, iskopao sam da sam ovaj trik korsiti pre nekih desetak godina u slicnoj situaciji, samo sto sam se s godinama rada u PHP-u navikao da razmisljam da sve sto je dinamicno u dokumentu, resavam u PHP- a ne u HTML-u.

Dragan Babić 30. 07. 2007. 04:26

Ja danas jedva nasao putanju do kuce, relativnu.

BrainDamage 30. 07. 2007. 07:51

4 Prilog(a)
ROFL :D

Ja, opet, juce jedva nasao putanju... :1039:

Dragan Babić 30. 07. 2007. 11:44

Ko je vid'o - vid'o. ;)

kodi 30. 07. 2007. 12:22

Off Topic:
Citat:

Originalno napisao Dragan Babić (Napišite 39574)
Ko je vid'o - vid'o. ;)

chuj vid'o ............ sachuv'o


Veljko 30. 07. 2007. 12:33

Off Topic: E Dragane Babicu stvarno ti svaka cast.Uvek se odusevim sa ovim tvojim slikama :)

Dragan Babić 30. 07. 2007. 13:34

Nema bolje zabave od one kada dodjes kuci demoliran i ides na interweb i postavljas slike sebe u raznim agregatnim stanjima. :)

Mada da se razumeti, gledali smo koncerte The Pogues i Shane MacGowana celo vece.


Vreme je GMT +2. Trenutno vreme je 01:04.

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.