Ich werde wahrscheinlich eine wirklich blöde Frage stellen, aber ich kann keinen Weg finden, um zu tun, was ich will.Behandeln eines Unterverzeichnisses als Wurzelverzeichnis für Apache
Ich möchte bei http://example.com/MyNewProject
In jeder der Web-Seiten, ein Projekt zu meinem Server lade ich eine Datei enthalten, die alle die Importe für Stylesheets tut, Javascript etc. Ich will nicht die volle zur Verfügung zu stellen Pfad jedes Mal möchte ich nur in der Lage sein /MyStylesheet.css
Meine Haupt Websites Dokument zu tun Wurzel ist /var/www/html/example
und meine neue Projekte Verzeichnis innerhalb /var/www/html/example/MyNewProject
gespeichert.
Was ich will, ist in meinem Import, wenn ich /MyStylesheet.css
statt zu meinem Server-Web-Verzeichnis gehen wird es gehen zu/var/www/html/Beispiel/MyNewProject, um die CSS zu bekommen.
Ich habe versucht, die folgenden zu meinem Apache-Konfigurationsdatei hinzufügen:
Alias /NewProjectTemplate "/var/www/html/example/NewProjectTemplate"
Alias /NewPRojectTemplate/ "/var/www/html/example/NewProjectTemplate"
<Directory "/var/www/html/example/NewProjectTemplate">
Options Indexes FollowSymLinks Includes
AllowOverride All
XBitHack On
Order allow,deny
Allow from all
</Directory>
Diese leider funktionierte nicht so habe ich versucht, auch die folgenden meiner Virtual Datei
<VirtualHost *:80>
DocumentRoot /var/www/html/example/NewProjectTemplate
ServerName example.com/NewProjectTemplate
</VirtualHost>
Hinzufügen Ich habe mich bei Google umgeschaut, kann aber nichts Bestimmtes finden. Das einzige, was ich gefunden habe, ist etwas mit der Rewrite-Engine zu tun, aber das scheint ein wenig zu kompliziert und OTT für meine Bedürfnisse.
Vielen Dank für Ihre Hilfe.
UPDATE
OK, ich habe ein wenig weiter bekam, wenn auch nicht viel, ich bin sicher, es ist nicht das kompliziert sein soll.
Statt die virtuellen Hosts zu verwenden, ich bin ein Alias jetzt mit und unten ist, was ich meine httpd.conf in meinem SSI
DocumentRoot "/var/www/html"
Alias /NewTemp/ "/var/www/html/example/NewProjectTemplate/"
Alias /NewTemp "/var/www/html/example/NewProjectTemplate"
<Directory "/var/www/html/example/NewProjectTemplate/">
Options FollowSymLinks Includes
AllowOverride all
</Directory>
<Directory "/var/www/html/example/NewProjectTemplate">
Options FollowSymLinks Includes
AllowOverride all
</Directory>
In meinem HTML-Code hinzugefügt habe ich tue das folgende:
<!--#include file="includes/imports.html"-->
Wie Sie sehen dies ein relativer Pfad ist und umfasst, ist in der Wurzel von NewProjectTemplate. Dies ist jedoch eine Vorlagendatei, also möchte ich, dass sie immer zur Wurzel geht, um die Datei zu finden, so dass sie garantiert funktioniert, egal wie tief sie auf der Seite ist. Zum Beispiel, wenn ich die Linie nach unten ändern, dann bekomme ich einen Fehler error processing directive
<!--#include file="/includes/imports.html"-->
Also auch wenn es ohne das Werk/aber nicht mit dem Schrägstrich, wenn ich den Schrägstrich nicht so enthalten Dieser Import funktioniert dann, die Importe in der Datei imports.html funktionieren, obwohl sie den führenden Schrägstrich enthalten, so dass sie immer zum Stammverzeichnis gehen. Unten ist mein HTML Importe Also nur
<link rel="stylesheet" type="text/css" href="/StyleSheet.css">
<link rel="stylesheet" type="text/css" href="/navigation/top-nav.css">
<link rel="stylesheet" type="text/css" href="/navigation/side-nav.css">
<script type="text/javascript" src="/scripts/jquery.js"></script>
<script type="text/javascript" src="/scripts/menu.js"></script>
Datei zu klären, ob die # include file =
includes/imports.html
die SSI-Anweisung funktioniert und /StyleSheet.css erfolgreich importiert, obwohl es den führenden Schrägstrich hat. Wenn ich ein/zum Pfad der SSI hinzufüge, wird es nicht ge importiert.
Aber hier ist, wo es seltsamer wird.
Wenn ich dann eine andere Datei zu einem Unterverzeichnis hinzufügen, z. NewProjectTemplate/MySubDirectory
und dann fügen Sie die SSI zu ../includes/imports.html es funktioniert immer noch nicht. Wie die # include-Datei erwartet die SSI-Direktive, dass sich die Datei im selben Arbeitsverzeichnis befindet.
Hoffnung macht den Sinn
In unserem PHP-Code, wir ein Umfeld geschaffen, Objekt, das die aktuelle URL analysiert und basierend auf den Unterverzeichnissen in der URL, unsere „baseWebPath“ bestimmt. Dies ist die Grundlage für eine vorlagenbasierte Lösung, bei der wir unabhängig von der Position des Skripts immer unser Javascript und CSS mit demselben relativen Pfad wie "javascript/myscript.js" verwenden können. Vermutlich versuchen Sie, Verweise wie "../javascript/myscript.js" und "../../javascript/myscript.js" zu vermeiden. Mein Vorschlag ist, mit einem PHP-basierten Ansatz zu gehen, anstatt zu versuchen, eine Apache-basierte Lösung zu finden. – Steven