Das Problem hier ist die Diskrepanz zwischen absoluten und relativen Pfaden. Indem Sie es in einen anderen Pfad einbinden, den Pfad von chart.html
effektiv ändern, aber den relativen Pfad der abhängigen Dateien NICHT ändern, brechen Sie den Code.
Es gibt die Basis-Tag https://developer.mozilla.org/en/docs/Web/HTML/Element/base, die Sie in den Kopf setzen könnten. Dies kann jedoch die Situation verschlimmern, da der andere Inhalt, den Ihre index.php
enthalten könnte, nicht mehr funktioniert, es sei denn, diese verwenden absolute Pfade. Wenn Sie dies nicht tun, könnte eine gute Lösung sein.
Die zweite Lösung wäre wahrscheinlich (programmatisch) nach relativen Pfaden in Ihrem HTML zu suchen und diese Pfade durch korrigierte Pfade im laufenden Betrieb zu ersetzen. Es gibt einige seltsame Fälle, in denen Javascript in HTML verwendet wird und es möglicherweise einen "Anti-Kopierschutz" -JS-Code gibt, der wahrscheinlich daran ersticken wird.
Die dritte Lösung (abhängig von Ihrem Anwendungsfall natürlich) wäre, die HTML nicht zu enthalten, sondern stattdessen eine iframe
in Ihrer Ausgabe, wo Sie auf den richtigen Pfad zeigen. Da es vom richtigen Pfad geladen wird, sollten relative Pfade wieder funktionieren. (Ich würde das vorziehen, vor allem, wenn es eine Art von "Vorschau" -Funktionalität ist, nach der Sie suchen).
Eine andere Lösung könnte eine andere index.php
in den Planordner zu setzen, dass - indem (und den ursprünglichen index.php
s Code flexibel genug zu machen) - wird die gleiche Arbeit wie das Original index.php tun, aber, wie es verlangt wird Von einem anderen Weg aus ist alles in Ordnung.
Ein anderer Ansatz wären URL-Umschreibungen, bei denen Sie als erscheinen lassen könnten, als ob die index.php im Diagrammverzeichnis wäre (möglicherweise ist eine Umleitung vom ursprünglichen Aufruf erforderlich). URL-Rewrites können je nach Ihrer gesamten Konfiguration schwierig sein.
Das sind meine Vorschläge, je nachdem, was Sie eigentlich mit Ihrem Projekt machen wollen, könnte es geeignetere Lösungen geben.
Update der zusätzlichen index.php
Lösung:
Beachten Sie, dass dies nur für die Ansicht ein Projekt zu einer Zeit arbeiten, und gleichzeitig nicht mehrere. Auch das hängt stark davon ab, was Ihr index.php
tut oder wie es funktioniert. Lassen Sie mich annimmt, dass es wie folgt aussieht:
<?php
$project = !empty($_POST['project']) ? $_POST['project'] : '';
$projects = array('chart', 'otherproject');
if(in_array($project, $projects)) {
include $project.'/'.$project.'.html';
}
foreach($projects as $p) {
echo '<a href="?project='.$p.'">'.$p.'</a>';
}
nun die neuen chart/index.php
würde wie etwas tun:
<?php $project='chart'; include '../index.php';
und müssen Sie zu Ihrem ursprünglichen ändern /index.php
zu:
<?php
$project = !empty($project) ? $project : ''; // <-- changed
$projects = array('chart', 'otherproject');
if(in_array($project, $projects)) {
include $project.'/'.$project.'.html';
}
foreach($projects as $p) {
echo '<a href="/URL/TO/ROOT/'.$p.'/index.php">'.$p.'</a>'; // <-- changed
}
Warum nicht die absolute URL verwenden? –
Versuchen Sie, ''. Von dem Fehler, ich denke, das 'php'-Skript beginnt, aus dem aktuellen Arbeitsverzeichnis zu suchen und daher erhalten Sie einen Fehler. –
@VivekPradhan Ihre vorgeschlagene Lösung würde die Funktionalität der eigenständigen 'chart.html' Datei, die benötigt wird, durchbrechen. –