2011-01-14 13 views
0

Ich habe eine Website mit index.php im Stammordner, Bilder in /img und overview.php in /content. Ich habe eine sidebar.php Datei, die in index.php und overview.php enthalten ist. Wie soll ich mich auf /img/image.gif beziehen, wenn ich einen Link in jede Datei einschließe? Die Position image.gif ändert sich relativ zum Speicherort der Datei, die darauf verweist.
Die Verwendung von /img/image.gif in sidebar.php funktioniert in index.php, aber es schlägt für die Datei unter /content/overview.php.
Die einzige Lösung, die ich sehen kann, ist entweder ein separates sidebar.php in jedem Unterverzeichnis enthalten, oder ein /img Verzeichnis in jedem Unterverzeichnis enthalten.
Der beste Vorschlag, die ich finden kann, ist den <base> HTML-Tag zu verwenden, wie hier vorgeschlagen:
Change relative link paths for included content in PHPWeb-Entwicklung - relative URLs ohne Duplizieren von Dateien

jedoch in der gleichen Verbindung, schlägt SamGoody, dass die <base> Tag is no longer properly supported in Internet Explorer, since version 7.

I Ich möchte einen Einblick in die Sache, bevor ich mich auf eine Vorgehensweise einlasse.

Danke.

EDIT: Ich bin mit dem falschen Ansatz unten mit "../"

Beispiel-

root/index.php:

... 
<link rel="stylesheet" type="text/css" href="style.css" /> 
<title>title</title> 
</head> 
<body> 
<?php include('include/header.php'); ?> 
<?php include('include/menu.php'); ?> 
... 

root/include/header.php:

... 
<div id="header"> 
<span class="fl"><img src="img/dun1.png"/></span><span class="fr"><img src="img/dun2.png"/></span> 
... 

root/content/overview.php:

... 
<link rel="stylesheet" type="text/css" href="../style.css" media="screen" /> 
<title>Overview</title> 
</head> 
<body> 
<?php include('../include/header.php'); ?> 
<?php include('../include/menu.php'); ?> 
... 

Antwort

3

Mit /img/image.gif in sidebar.php wird in index.php arbeiten, aber es funktioniert nicht für die Datei, die sich auf /content/overview.php

Aber es shouldn‘ t. Der vorangehende / macht es zu einem absoluten Pfad, der von jedem Punkt auf dem Server funktioniert. Wenn das für Sie nicht funktioniert, gibt es irgendwo ein Problem - in diesem Fall poste einige Beispiele.

Wenn Sie nicht planen, die gesamte Site eines Tages in ein Unterverzeichnis zu verschieben oder Bilder in ein Content Delivery Network zu verschieben (für beide Aktionen müssen die Adressen neu geschrieben werden), können Sie absolute URLs verwenden.

+0

danke, das hat dazu beigetragen, einige Dinge für mich zu klären. Ich habe versucht/und ../, aber kann es nicht zur Arbeit bringen. Wenn ich "style.css" in "overview.php" in "/root/style.css" ändere, bekomme ich den Stil, aber ich kann nicht die gleiche Idee auf Bilder anwenden. Die Verwendung von "/ root /" ist wahrscheinlich eine schlechte Wahl für dieses Beispiel, da es nicht die Wurzel von meinem localhost ist. Das "/ root", auf das ich mich beziehe, befindet sich unter "var/www/root". Ich nehme an, es ist etwas, das ich nicht über relative/absolute Pfade weiß, oder etwas, das ich nicht über PHP-Includes oder meinen Apache-Server weiß ist falsch konfiguriert oder alle der oben genannten. – eshriek

+0

@eshriek Was ist Ihr Apache-Webstamm? 'www' oder' root'? –

+0

Apache Web Root ist www – eshriek