-
07-01-2010, 10:33 #1Member
- Registered
- 07/11/03
- Location
- Bree
- Posts
- 6,239
- iTrader
- 158 (99%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
Url rewriting - locatie bestanden
In tegenstelling tot mijn testserver heb ik url rewriting op mijn productie wel draaien (zie andere thread)
En nu heb ik een vrij simpele vraag over de locatie van bestanden die toch wat uitleg vereist:
Ik heb een vraag over de verwijzing naar bestanden.
Het zit zo, ik ben momenteel mijn website aan het compatibel maken met url rewriting.
De structuur van mijn site is als volgt:
css/stijl.css
bijlagen/nieuws/afbeeldingen/afbeeldingnaam.jpg
javascript/javascriptbestand.js
scripts/afbeeldingscript.php
index.php
nieuws.php
nieuwsbericht.php
enz
Een gewone url http://www.mijnsite.be/nieuwsbericht.php?id=100 zit dus op het hoogste niveau en daar roep je
dus de afbeelding op door in nieuwsbericht.php de file bijlagen/nieuws/afbeeldingen/afbeeldingnaam.jpg op te roepen.
Als je url-rewriting doet (dus met een url http://www.mijnsite.be/nieuws/artikel/100/ kan je dus de afbeelding niet op dezelfde manier oproepen want dan krijg je
http://www.mijnsite.be/nieuws/artike...eldingnaam.jpg en dat bestaat niet.
Je moet dus de afbeelding oproepen door een / te plaatsen voor bijlagen, dus /bijlagen/nieuws/afbeeldingen/afbeeldingnaam.jpg
Volledig logisch allemaal.
Wat ik echter wel vreemd vind is hetvolgende.
Voor mijn cssfile moet ik dus ook een "/" ervoor zetten:
<link rel="StyleSheet" href="/css/stijl.css" type="text/css" title="layout" />
Anders wordt de file niet gevonden.
Als ik mijn scriptfile include hoeft dat blijkbaar niet, dus gewoon:
<?php include("scripts/afbeeldingscript.php") ?>
Bovendien herkent het script mijn afbeelding ook niet als ik deze doorgeef met een "/" voor: /bijlagen/nieuws/afbeeldingen/afbeeldingnaam.jpg
Daaraan moet ik het weer doorgeven zijnde bijlagen/nieuws/afbeeldingen/afbeeldingnaam.jpg
bij file_exists is dit ook zo, daar mag je geen "/" ervoor zetten of hij kan de afbeelding niet vinden terwijl je m wel alleen kunt tonen met een "/" voor.
Hoe komt dat precies?Last edited by sarnath; 07-01-2010 at 11:22.
webdeveloper / gamerno votes
-
-
07-01-2010, 20:13 #2
PHP wordt uitgevoerd op de server en gaat niet door .htaccess, bestanden zijn daardoor altijd relatief te linken en hoef je dus niet vanuit root ("/") te gaan linken
no votes
-
07-01-2010, 21:21 #3Member
- Registered
- 28/05/03
- Location
- Diepenbeek
- Posts
- 2,290
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 2/2
Inderdaad php is niet gevoelig aan de rewrite omdat dit gegenereerd wordt voor de .htaccess, stylesheets, images en javascript wel. Deze zijn niet bewust dat je met de url's aan het foefelen bent. Dus die gaan lekker relatief verder denken op wat mappen die niet bestaan.
Makkelijk op te lossen:
Even een global declareren define("ROOTDIR", "/i-is-the-root-folder-or-whatever-base-dir");
Dat zet je bij alle externe files die worden geladen, zoals css, javascript, images, ... <img src="<?php ROOTDIR ?>/images/image.png" alt="ladida"/>no votes
-
08-01-2010, 10:16 #4Member
- Registered
- 07/11/03
- Location
- Bree
- Posts
- 6,239
- iTrader
- 158 (99%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
ok, bedankt voor jullie antwoorden
webdeveloper / gamerno votes
