John-B Skrevet 3. juni 2008 Del Skrevet 3. juni 2008 (endret) Jeg har per i dag denne strukturen: nettbutikk.no/produkt.php?ID=produsent-produktnavn Har laget en modrewrite rule som gjør at jeg kan skrive: nettbutikk.no/produkt/produsent/produktnavn/ som er mye enklere URL. Problemet er at når den URL'en lastes i nettleseren lastes ingen bilder, stylesheets etc. Årsaken til det er at dette er kodet med relativ url, og derfor leter den nå etter dette på: nettbutikk.no/produkt/produsent/produktnavn/stylesheet.css i stedet for nettbutikk.no/stylesheet.css Finnes det noen enkel løsning på dette? Jeg ønsker ikke å endre alle linker på hele nettstedet... Vil helst at den gamle metoden også skal fungere. Endret 3. juni 2008 av _named_ Lenke til kommentar
Ernie Skrevet 3. juni 2008 Del Skrevet 3. juni 2008 (endret) Dette vil relativt åpenbart ikke la seg gjøre. mod_rewrite lurer nettleseren til å tro at den aksesserer en mappestruktur, mens det i realiteten blir gjort om til en «query»-streng uten at nettleseren har merket en ting. Nettleseren vil såklart ta utgangspunkt i mappestrukturen den tror eksisterer, og resultatet erfarer du jo selv. I bunn og grunn får du igjen for å ikke bruke absolutte baner, noe iallfall jeg helt klart foretrekker over relative baner (det er noe forbanna herk). Red.: Når jeg tenker meg om så kan det vel gå å legge til enda en regel, samme som den eksisterende bare med stylesheet.css lagt på tilslutt og at det skal tolkes som nettbutikk.no/stylesheet.css. Endret 3. juni 2008 av Ernie Lenke til kommentar
John-B Skrevet 4. juni 2008 Forfatter Del Skrevet 4. juni 2008 (endret) Å bruke absolutte baner er ikke mulig siden vi tester/utvikler nettsidene med andre url'er. Trodde for øvrig at absolutte baner var fyfy i programmerings-verdenen... (dette er faktisk eneste gang jeg noen gang har vært borti en fordel med statisk bane...) Tenkte at siden apache har funksjoner for å "redirecte" url-ene (mod_rewrite), burde det vel også være en funksjon som tok hensyn til hvor filene faktisk ligger. Siden den vet at filen som serveres er nettbutikk.no/produkt.php - burde det da ikke være så vanskelig å lage en funksjon i apache som gjør at den skjønner at relative filer da skal være relativ filen som faktisk serveres... Men det er altså slik å forstå at eneste løsningen her er statiske baner? (som du nevner er det sikkert en mulighet for å få dette til med stylesheet'et, men det hjelper ikke så mye når alle bilder og andre filer får samme problem). Endret 4. juni 2008 av _named_ Lenke til kommentar
Ernie Skrevet 4. juni 2008 Del Skrevet 4. juni 2008 Å bruke absolutte baner er ikke mulig siden vi tester/utvikler nettsidene med andre url'er. Trodde for øvrig at absolutte baner var fyfy i programmerings-verdenen... (dette er faktisk eneste gang jeg noen gang har vært borti en fordel med statisk bane...)Vel, da er det en god ide å ikke overskrive konfigurasjonsfilene slik at hver enkelt installasjon kan ha sine egne baner og URL-er i konfigurasjonen. Etter min mening er ikke konfigurasjon noe man sprer rundt. Skal man gjøre endringer får det være i en mal e.l. som man kan sjekke opp mot. ... og ja, jeg er klar over at relative baner er rimelig populært, noen vil sikkert kalle absolutte baner for fy-fy så lenge man ikke trenger det. Jeg er derimot av en helt annen oppfattning, og jeg er nok ikke helt alene om det Dog, det er under sterk forutsettning at det er automatisk konstruerte baner og ikke hardkodede (som i mine øyne virkelig er ille). Tenkte at siden apache har funksjoner for å "redirecte" url-ene (mod_rewrite), burde det vel også være en funksjon som tok hensyn til hvor filene faktisk ligger. Siden den vet at filen som serveres er nettbutikk.no/produkt.php - burde det da ikke være så vanskelig å lage en funksjon i apache som gjør at den skjønner at relative filer da skal være relativ filen som faktisk serveres...Problemet er jo at du i praksis skriver om en URL, og det gjør at apache ikke «veit» bedre enn de reglene du setter. Men det er altså slik å forstå at eneste løsningen her er statiske baner? (som du nevner er det sikkert en mulighet for å få dette til med stylesheet'et, men det hjelper ikke så mye når alle bilder og andre filer får samme problem).Ja, enten absolutte baner eller legge til flere regler til mod_rewrite. Lenke til kommentar
Runar Skrevet 4. juni 2008 Del Skrevet 4. juni 2008 Bruker du et enkelt (eller avansert) template system, eller gjentar du i alle filene dine? Hvis du kun har inkludert css-filene dine en gang, skal du bare trenge å forandre den, med mindre jeg har misforstått alt. Lenke til kommentar
-morten Skrevet 7. juni 2008 Del Skrevet 7. juni 2008 Dersom du har alle bildene i en mappe, kan du lage flere regler som sier at alle forespørsler etter bildefiler som ikke finnes på forespurt plassering, skal skrives om til /img/[fil] osv. Tilsvarende med css-filer. Tenkte at siden apache har funksjoner for å "redirecte" url-ene (mod_rewrite), burde det vel også være en funksjon som tok hensyn til hvor filene faktisk ligger. Siden den vet at filen som serveres er nettbutikk.no/produkt.php - burde det da ikke være så vanskelig å lage en funksjon i apache som gjør at den skjønner at relative filer da skal være relativ filen som faktisk serveres... Da måtte den ha skrevet om all html-koden on-the-fly. Lite gunstig.. Lenke til kommentar
Homer S. Skrevet 1. juli 2008 Del Skrevet 1. juli 2008 Kan dette være til hjelp? <html> <head> <?php echo '<base href="http://' . $_SERVER["SERVER_NAME"] . '/">'; ?> </head> <body> <h1>Hello world!</h1> </body> </html> http://devedge-temp.mozilla.org/library/ma...s3.html#1654516 Lenke til kommentar
Jonas Skrevet 1. juli 2008 Del Skrevet 1. juli 2008 (endret) Selv pleier jeg å definere root-URL i en konfigurasjonsfil. Dette muliggjør å skrive URL-er relative til prosjektet, og samtidig kunne flytte det rundt, bare ved å endre litt i konfigurasjonsfilen. Da oppnår du ikke problemet med mod_rewrite. gen-config.php <?php $url = 'http://www.mitt-domene.no/'; ?> index.html <link rel="stylesheet" href="<?=$url;?>css/style.css" type="text/css" media="all" /> Endret 1. juli 2008 av Jonas Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå