2014-08-27 8 views
6

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

+0

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

Antwort

0

So haben Sie so in dem virtuellen Host versucht?

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot "/var/www/html/example/" 
    ServerName example.local 
    ServerAlias example.local 
    <Directory "/var/www/html/example/"> 
     Options All Includes Indexes FollowSymLinks 
     Order allow,deny 
     Allow from all 
     AllowOverride All 
    </Directory> 

    Alias /NewProjectTemplate /var/www/html/example/NewProjectTemplate 
    <Directory "/var/www/html/example/NewProjectTemplate"> 
     Order allow,deny 
     Allow from all 
    </Directory> 
</VirtualHost> 

Hoffe, dass es diesmal hilft ..

+0

Dies ist nicht das, was ich gefragt habe, dies ändert effektiv die Domain meines Webservers. Die URL sollte immer noch http://example.com/NewProjectTemplate sein, aber NewProjectTemplate wird als Wurzel behandelt – Boardy

+0

aktualisiert die Antwort, hoffe es hilft ... – pecci

+0

Danke Ich habe das jetzt versucht, aber scheint nicht zu funktionieren. Ich bekomme immer noch den PHP-Fehler, der besagt, dass es /includes/imports.html nicht finden kann./beinhaltet, dass Sie sich im Stamm von NewProjectTemplate befinden. Also ich denke es muss in der Web-Server-Wurzel – Boardy

Verwandte Themen