Page 1 of 1

js/css files als php ausführen

Posted: Thu 20. Jun 2024, 14:09
by KriZa
Hallo,

ich möchte gerne ein versionsbedingtes Laden von nicht-php Dateien umsetzen. Um mir unnötige Unterordner zu ersparen würde ich gerne meine js und css im format /js/app.js?v=1.0.1 ansprechen, welche dann per file_get_contents den entsprechenden Inhalt läd. So habe ich nur einen Versionsordner.

Ich habe folgendes im Netz gefunden:

Code: Select all

<FilesMatch "\.js$">
  SetHandler application/x-httpd-php
  Header set Content-type "application/javascript"
</FilesMatch>
Funktioniert aber leider nicht. Ich vermute mal, es liegt am SetHandler Teil, der nicht korrekt ist. Was müsste da rein?



Ich weiß, es geht auch über /js/app.php?v=1.0.1 und dann mit set header content-type "application/javascript", aber ich empfinde das als nicht so sauber.

Danke für eure Hilfe.

Re: js/css files als php ausführen

Posted: Thu 20. Jun 2024, 14:36
by Jolinar
Und wenn du die URL mit einer Rewrite Rule entsprechend umschreibst...?

Re: js/css files als php ausführen

Posted: Thu 20. Jun 2024, 14:38
by 24unix
Was ist das für ein Projekt?
Bei Symfony z.B. gibt es mit Asset-Mapper die Option, die so etwas unterstützt.

Oder halt Webpack.

Re: js/css files als php ausführen

Posted: Thu 20. Jun 2024, 14:42
by Tobi
„.js“ ist nur eine Dateiendung.

Genauso gut kannst du eine „.php“ als Java-Script-Datei einbinden. Dann wird die Datei automatisch durch den PHP Parser geschickt und kannst dir das ganze Rewriting komplett sparen.

Re: js/css files als php ausführen

Posted: Thu 20. Jun 2024, 15:53
by KriZa
Das ist eine komplette Eigenentwicklung. Ein Frontend, das eine API eines Partners anspricht.

Ich habe jetzt die Variante mit 'js/app.php?v=1.0.0' erfolgreich umgesetzt.

Ich habe aber in der htaccess jetzt folgendes drin:

Code: Select all

<FilesMatch "\.(php)$">
    Require ip 127.0.0.1
</FilesMatch>

<FilesMatch "^(index\.php|app\.php)$">
    Require all granted
</FilesMatch>
Zugriffe auf php Dateien dürfen nur intern gemacht werden mit der Ausnahme index.php oder app.php
Des Weiteren wird nachfolgend alles auf die index.php weitergeleitet, was nicht im Verzeichnis vorhanden ist.

Jetzt habe ich doch aber mit FilesMatch alle index.php und alle app.php, die da evtl noch mal kommen könnten in egal welchem Unterverzeichnis freigegeben. Das ist leider der Punkt an dem ich aussteige... Eigentlich soll ja nur die index.php auf erster Ebene und die app.php im Verzeichnis js ansprechbar sein.
Zum Thema <directoryMatch> kann ich leider keine Lösung finden - Kann man FilesMatch und DirectoryMatch ineinander verschachteln?
Also sowas wie:

Code: Select all

<directoryMatch ...>
<FilesMatch "app\.php">
    Require all granted
</FilesMatch>
</directoryMatch>
In Sachen interne Umleitung der app.js auf eine app.php muss ich mich erstmal in den Stoff einlesen, arbeite zu selten mit sowas.

Re: js/css files als php ausführen

Posted: Thu 20. Jun 2024, 15:57
by KriZa
Ok...

<DirectoryMatch not allowed here

geht somit also an der Stelle nicht

Re: js/css files als php ausführen

Posted: Thu 20. Jun 2024, 16:20
by KriZa

Code: Select all

<If "%{REQUEST_URI} =~ m#^/pagesubfolder/js/app.php#">
    Require all granted
</If>
Mhh - damit scheints zu funktionieren.