PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umleitung von Aufrufen - Mod_rewrite / htaccess


Lex
30.06.2014, 23:22
Hey,

Nach ein paar Videos zum Zend-Framework kam mir die Idee diese Struktur ebenfalls zu benutzen.

Dann kamen aber die ersten Probleme. Ich hoffe einer hier hat Erfahrung und Kentnisse von mod rewrite und/oder Apache configuration.

Also, bei Zend gibt es im /var/www/public nur eine index.php, alle anfragen werden an diese Datei umgeleitet. Das funktioniert bei mir auch ohne Probleme. Mein Problem ist nur, was bzw. wie verlinke ich denn dann Bilder zu der Source?

Die Orderstruktur sieht ungefähr so aus.

Porject root /var/www
CSS /var/www/css
JS /var/www/js
Images /var/www/images

Jetzt zeigt jedoch das Document-Root des vHosts absichtlich auf /var/www/public. Damit landen alle Aufrufe in diesem Verzeichniss und werden von der index.php entgegen genommen. So wie gewollt.

Das schöne daran ist, ich kann klasse unter /var/www/class mittels require_once trotzdem einbinden da PHP ja keine Begrenzung hat. Bei CSS/JS/Bildern sieht das jedoch anders aus. Für die CSS und JS files hab ich mir eine Funktion geschrieben welche die CSS mittels file_get_contents ausliest und dann ausgibt. Nur mein Hauptproblem sind die Bilder. In den CSS Dateien stehen pfade auf die der Webserver nicht zugreifen kann. Habe einige Stylebasierten Grafiken nun mittels Base64 hash ersetzt, aber das ist keine dauerhafte Lösung.

Wonach ich also suche ist ein Weg um Aufrufe die zB domain/images/1.gif lauten auf /var/www/images/1.gif umzuleiten. Ich könnte selbstverständlich nen softlink im System setzen, aber das wäre dann wohl kaum eine produktive Lösung. Ich weiß jedoch nicht ob man mittels mod_rewrite auf absolute Pfade verweisen kann, und hoffe hierbei auf Hilfe von euch :)

Bin für alle Lösungsansätze sehr dankebar.

Lg Lex

tantetoni2
01.07.2014, 11:19
Wie wäre es wenn du dir ganz einfach n Alias in der Apache conf zu dem Host anlegst.
Alias /images /var/www/pfad-zu-den-bildern

Lex
01.07.2014, 13:02
Auf die Idee bin ich noch garnicht kommen, geile Idee Toni, werd ich am Abend gleich ausprobieren :) :)

Vielen Dank,

Lg Lex

Spyky
01.07.2014, 14:25
Mal im Ernst du bist doch nie und nimmer Diplom Programmierer oder?
Also sowas einfaches nicht hinzubekommen grenzt schon an absolutem Nichtswissen!
So nun Back to Topic also es gibt mehrere Möglichkeiten .
Hiermal eine davon via htaccess

RewriteEngine on
# die Datei liegt im Verzeichnis /abc/def
# erreichbar ist dieses Verzeichnis aber über /xyz
# bspw. weil in der httpd.conf folgendes gesetzt wurde:
# Alias /xyz /abc/def # RewriteBase /xyz RewriteRule ^(.*)\.htm$ $1.html
# macht alle *.html auch als *.htm erreichbar

Und nichts zu danken gern geschehen !

Lex
01.07.2014, 14:48
Danke für deinen sinnlosen kommentar, scheinbar bist du des lesens nicht mächtig.
Dein kopierter Ansatz ist absolut unbrauchbar für mein Anliegen was du wüsstest wenn
du das was ich geschrieben habe auch verstehen würdest. Dem ist wohl nicht der Fall.

Von daher bitte nochmal zurück zur Baumschule und dann darfst du nochmal kommentieren :)

Lg Lex


PS: Die Vergewaltigung der Rechtschreibung der der deutschen Sprache sind wir von dir ja schon gewohnt,
es wird jedoch scheinbar immer schlimmer.

Thunder™
01.07.2014, 18:07
die idee das ganze über Alias zu *steuern* zb Pic´s ist genial, da fällt mir gerade was gutes ein... thx tt2..

ach Spyky, wenn du schon Sachen kopierst dann doch bitte mit Quelle xD

http://de.selfhtml.org/servercgi/server/rewrite.htm

Spyky
01.07.2014, 20:11
Ich habe schon richtig gelesen Lex aber wie ich sehe hast du noch weniger Ahnung als ich dachte MFG

Lex
01.07.2014, 20:24
So, nunmal Klartext Abys,
Hättest du es verstanden, wüsstest du das meine Verzeichnisse aushalbs des vhost directories liegt und damit mod_rewrite für mich unbrauchbar ist. Man sieht du hast noch weniger Ahnung als du behauptest. Irgenwelche kopierten Codeschnipsel die du selbst nicht verstehst zu kopieren, nochdazu ohne Angabe von Quelldaten zeigen dass du im Grunde doch einfach mit zu bemittleiden bist. Ich weiß nicht was du dir davon erhoffst meine Real-Daten, meinen Akademischen Titel oder sonstiges zu posten. Vermutlich ist es einfach der pure Neid dass du unterbelichtetes Idividum es nicht weiter als zu nem Realabschluss geschafft hast, falls du den überhaupt hast.

Lg Lex

Spyky
01.07.2014, 20:52
Heisst es nicht Abyss und nein der Teufel bin ich nicht .
Akademischen Titel Das kann nur von einem Österreicher kommen lass uns beim Thema bleiben Coden
wo du noch viel von lernen musst.

pat
01.07.2014, 22:29
das Grenzt echt schon Kindergarten ...
Könnt ihr nicht mal bei der sache bleiben und das board so nutzen wie eig mal gedacht war...

Lex
01.07.2014, 22:48
So, habs jetzt doch noch mit den Alias hinbekommen, zwar leider etwas statisch was ich nicht wollte, aber anders seh ich im Moment keine Möglichkeit dafür.

Als referenz-ID hab ich mir die Projekt-ID hergenommen und habe anhand daran differenziert, heißt zwar ich muss bei neuen Projekten leider wieder händisch in den vHost um es anzupassen, aber das ist mir lieber als eine unübersichtliche Dateistrukutr zu haben.

Projektstruktur
Mittels "Alias /1 "/var/www/projects/project1" verweise ich direkt in den Projektordner des Projektes mit der ID 1 und kann so via URL/1/images direkt auf die Bilder zugreifen, zwar nicht hübsch aber sieht man ohnehin nur in den IMG SRC Tags oder in der CSS.

Fürs erste könnte ich damit leben, es sei denn es hat jemand noch bessere Ideen.

Lg Lex

Stifler
01.07.2014, 23:45
Alias ist mehr dazu da dass man Inhalt aus einem Ordner der sich nicht innerhalb des htdocs Ordners befindet aufzurufen oder den genauen Pfad zu verschleiern!

Was du brauchst ist eher mod_rewrite als .htaccess

Tipps und Tricks mit mod_rewrite - praktische Beispiele - Suchmaschinenoptimierung Österreich suchmaschinentricks.at (http://suchmaschinentricks.at/tipps-tricks/mod_rewrite.html)

RewriteRule halt via Regulären Ausdruck definieren!

Lex
02.07.2014, 06:37
Alias ist mehr dazu da dass man Inhalt aus einem Ordner der sich nicht innerhalb des htdocs Ordners befindet aufzurufen oder den genauen Pfad zu verschleiern!

Was du brauchst ist eher mod_rewrite als .htaccess

Tipps und Tricks mit mod_rewrite - praktische Beispiele - Suchmaschinenoptimierung Österreich suchmaschinentricks.at (http://suchmaschinentricks.at/tipps-tricks/mod_rewrite.html)

RewriteRule halt via Regulären Ausdruck definieren!

Genau das ist bei mir ja der Fall, darum auch nicht mittels mod_rewrite, weil /var/www/projects nicht innerhalb des hdtocs liegt (/var/www/public).

Lg Lex

Stifler
02.07.2014, 10:24
Na dann wird das eine ziemlich statische Angelegenheit!

Lex
02.07.2014, 10:34
Jop leider, aber anders gehts aufgrund der Ordnersturktur leider nicht.

Lg Lex