[php / apache] variabele base tag?

Pagina: 1
Acties:
  • 184 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik gebruik multiviews om "mooie" urls te maken. Nu is het probleem dat de links naar de style's en de afbeeldingen niet meer werken. Heb her en der op het forum gelezen dat ik dan de <base> tag moet gebruiken. Maar ik krijg het lokaal op mijn windowsxp/apache/php niet voor elkaar.

Daarbij komt ook dat wanneer ik de index.php upload, niet de <base> tag steeds wil aanpassen. Dus het liefst gebruik ik een beschikbare $_SERVER-variabel.

Ik kan helaas geen "RewriteEngine On" met "RewriteBase /" in mn htaccess zetten (al weet ik niet of dit een oplossing bied), omdat ik bij windows dan een server error 500 krijg. Bij de host heb ik linux.


Wat heb ik geprobeerd:
De URL in de adresbalk op dat moment:
http://localhost/werk/bla/root/index/ontwerp_concept/2

PHP:
1
2
3
4
/* --- BASE --- */
$base = $_SERVER['SCRIPT_NAME']; // of $_SERVER['SCRIPT_FILENAME'];
$base = trim($base,'/index.php');
// $base is hier: W:/Sites/werk/bla/root


HTML:
1
2
3
4
5
6
7
8
9
10
11
<base href="<?php echo $base; ?>" />
<link href="/style/style.css" rel="stylesheet" type="text/css" /> of <link href="style/style.css" rel="stylesheet" type="text/css" />
<img src="/images/trans.png" /> of <img src="images/trans.png" />

<!-- resultaat en werkt niet-->
/style/style.css of style/style.css 
/images/trans.png of images/trans.png

of
http://localhost/werk/bla/root/index/ontwerp_concept/2/style/style.css 
http://localhost/werk/bla/root/index/ontwerp_concept/2/images/trans.png

HTML:
1
2
3
<!-- moet zijn -->
http://localhost/werk/bla/root/style/style.css
http://localhost/werk/bla/root/images/trans.png


Dus van alles geprobeerd met / of zonder of andere server-var maar ik kom er niet uit.

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Beter lijkt me HTTP_HOST aangevuld met SCRIPT_NAME.

Je kunt nl beter niet verwijzen naar W:/Sites/werk/bla/root, lokaal werken je javascripts dan wel, maar remote niet meer. Je kunt dit trouwens ook opslaan in een extern bestand. B.v. settings.php, en deze includen. Dan kun je index.php gewoon continue editen en uploaden zonder gedoe.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb er nu het volgende van gemaakt. Omdat de test-site niet in de root staat, probeer ik er nog wat aan toe te voegen, maar dat helaas niet.

PHP:
1
2
3
/* --- BASE --- */
$base = $_SERVER['HTTP_HOST'];
$base .= '/werk/bla/root/';


Voor alle verwijzingen naar styles en plaatjes heb ik nu een / gezet: "/images/trans.png".
Maar volgens de pagina-info van FireFox is de verwijzing naar de style nu "http://localhost/style/style.css" terwijl de base in de broncode nu het volgende is:

HTML:
1
<base href="localhost/werk/bla/root/" />


-- edit --

Dit is met alle links in de site overigens ook zo, maar dat zal tegelijkertijd wel opgelost worden denk ik.

[ Voor 9% gewijzigd door Verwijderd op 28-07-2007 15:29 . Reden: extra opmerking ]


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Verwijderd schreef op zaterdag 28 juli 2007 @ 15:24:
Voor alle verwijzingen naar styles en plaatjes heb ik nu een / gezet: "/images/trans.png".
Maar volgens de pagina-info van FireFox is de verwijzing naar de style nu "http://localhost/style/style.css" terwijl de base in de broncode nu het volgende is:

HTML:
1
<base href="localhost/werk/bla/root/" />


-- edit --

Dit is met alle links in de site overigens ook zo, maar dat zal tegelijkertijd wel opgelost worden denk ik.
Je moet goed het verschil zien tussen absolute en relatieve verwijzingen. Base href (moet trouwens http:// voor localhost komen) werkt alleen voor relatieve verwijzingen. Verwijzingen die met / beginnen, worden dus niet beïnvloed. Je kunt dus kiezen:
- werken met base href ("http://localhost/werk/bla/root/") en linken naar "style/style.css"
- niet werken met base href en linken naar "/werk/bla/root/style/style.css"

Acties:
  • 0 Henk 'm!

  • kokx
  • Registratie: Augustus 2006
  • Laatst online: 13-09 20:30

kokx

WIN

En om het laatste stukje te strippen, zou ik geen trim gebruiken. Je hebt in php daar een mooie functie voor genaamd dirname.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thnx allen. _/-\o_

Dit is het resultaat dat werkt:

PHP:
1
2
3
4
/* --- BASE --- */
$base = 'http://';
$base .= $_SERVER['HTTP_HOST'];
$base .= '/werk/bla/root/';


HTML:
1
<base href="<?php echo $base; ?>" />


Ik heb overal waar het nodig was de / weer weggehaald.
Pagina: 1