Wie konfiguriere ich Apache2, um statische Assets aus dem Stammunterverzeichnis des Servers bereitzustellen?

Wie konfiguriere ich Apache2, um statische Assets aus dem Stammunterverzeichnis des Servers bereitzustellen?

Frontend-Entwickler hier - ich habe gerade einen Server (Mac Pro) geerbt, um meine Prototypen in unserem Netzwerk zu hosten. Darauf ist bereits ein Apache-Server eingerichtet, aber ich weiß nicht viel über seine Konfiguration. Dies ist ein gemeinsam genutzter Server, also obwohl der Server-Stamm unter eingerichtet ist /Users/Shared, habe ich nur die Berechtigung, meine Prototypen unter zu platzieren.

/Shared/mydiv/mydept/prototypes

Ich erstelle meine Site mit Webpack und es platziert statische Assets in einem distVerzeichnis. Die Serverkonfiguration funktioniert; Benutzer können dorthin navigieren sharedserver.url.com/mydiv/mydept/prototypesund die Datei index.html wird korrekt bereitgestellt.

Das Problem besteht darin, dass auf index.html verwiesen wird scripts.js, das sich ebenfalls im distVerzeichnis befindet, der Webserver jedoch im Serverstamm unter sharedserver.url.com danach sucht, was offensichtlich eine 404-Antwort zurückgibt.

Ich verweise auf Skripte in index.html wie folgt:

<script src="scripts.js"></script>

Ebenso muss ich auf einige Schriftarten verweisen, die sich in befinden dist/fonts.

sharedserver.url.com/   <-- APACHE TRYING TO ACCESS STATIC ASSETS HERE
|_mydiv/
   |_ mydept/
      |_ prototypes/
         |_ _ dist/
                |_ index.html
                |_ scripts.js  <-- REALLY WISH APACHE LOOK FOR STATIC ASSETS HERE 
                | _ _fonts/
                       |_.eof,.ttf,etc.

Ich habe ein wenig über die Verwendung von vhosts gelesen, aber das Modul ist noch nicht in httpd.conf geladen (auskommentiert) und ich möchte keinen Konflikt mit der vorhandenen Konfiguration verursachen, die ich noch nicht ganz verstanden habe. Ich habe auch über .htaccess-Dateien gelesen, aber AllowOverride ist in httpd.conf auf None eingestellt – ich könnte es ändern und dann anfangen, mich mit .htaccess zu befassen, aber ich frage mich, ob es einen anderen Weg gibt, da ich keine Erfahrung mit der Einrichtung solcher Dinge habe.

Gibt es andere (relativ einfache) Möglichkeiten, Apache dazu zu bringen, in meinem Verzeichnis nach meinen statischen Assets zu suchen?

Antwort1

Ich denke, das liegt daran, dass Ihr Dokumentstamm wie folgt festgelegt ist

DocumentRoot "/sharedserver.url.com"

und du willst es so:

DocumentRoot "/sharedserver.url.com/mydiv/mydept/prototypes/dist"

und der Verzeichnispfad muss derselbe sein wie der Dokumentstamm

<Directory "/sharedserver.url.com/mydiv/mydept/prototypes/dist">

Wenn Sie dies so machen und Ihre Domain-URL verwenden, werden Sie zu index.html weitergeleitet und Ihr Skript wird korrekt angezeigt

Ich hoffe, das behebt Ihr Problem

Antwort2

Ich hatte das gleiche Problem und in meinem Fall wurde es durch den Wert des baseTags im Kopfbereich der Datei index.html verursacht:

<base href="/">

Dadurch wird die Basis-URL für relative URLs auf das Server-Root gesetzt. Ich konnte das Problem lösen, indem ich das baseTag entfernte/änderte.

Ich hoffe das hilft.

verwandte Informationen