htaccess und mod_rewrite mit 2 Ordnern
niklaskamenisch
- webserver
hi,
leider stehe ich heute irgendwie total auf dem Schlauch:
ich habe folgende Datenstruktur / IST-Situation (ausschnitt)
/media/images/bild.jpg
/media/downloads/datei.zip
/media/.htaccess
/includes/gd/image.php
1. Auf die Dateien unterhalb von /media/ soll man nicht zugreifen können => also eine .htaccess mit komplett verbot
2. Über /includes/gd/image.php?image=/media/images/bild.jpg&width=100&height=150 kann man die Bilder resized einbinden
3. Das bild wurde bisher direkt verlinkt und nur über html angaben verleinert => viel zu große dateien versendet
4. Das HTML ist soweit geändert, dass die Anfragen so aussehen könnten: /media/images/bild.jpg?width=100&height=150
Nun zu meinem Problem:
Ich möchte gerne mit htaccess folgendes hinbekommen:
Anfrage: /media/images/bild.jpg?width=100&height=150
Intern umleiten auf /includes/gd/image.php so dass ich die 3 Informationen (width, height, image) noch habe und in der image.php verarbeiten kann.
Idee war nun:
Einfach in der /media/images/ alles hart auf die /includes/gd/image.php umleiten und dort dann per $_SERVER den Rest irgendwie raus holen. Oder geht das mit htaccess noch schöner?
Der Ordner downloads sollte später dann auch auf eine download.php umgeleitet werden.
Das ganze wäre halt deutlich schöner, als mit den langen Links.
Gruß Niklas
hi,
zumindest kannst Du mit [QSA] den Querystring appenden:
'qsappend|QSA' (query string append)
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
Ich habe es schon mal so gemacht, dass ich die kompletten Requests auf eine "rewrite.php" umgeleitet habe und dort mit PHP aus zB. dem String $_SERVER["REQUEST_URI"] (?) oder ähnlichem dann das weitere erledigt habe.
mfg
tami
hi,
hi,
zumindest kannst Du mit [QSA] den Querystring appenden:
'qsappend|QSA' (query string append)
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
Ich habe es schon mal so gemacht, dass ich die kompletten Requests auf eine "rewrite.php" umgeleitet habe und dort mit PHP aus zB. dem String $_SERVER["REQUEST_URI"] (?) oder ähnlichem dann das weitere erledigt habe.
Hört sich für diverse Sachen gut an, dass mach ich z.b. auch mit meiner index.php im hauptverzeichnis so. Alles geht dort drüber und die sagt dann was wirklich gezeigt wird. Für meine Bilder und Downloads würde ich das aber gerne halt rausgelöst verwenden.
Dürfte aber echt die Lösung für mich sein ;)
Gruß Niklas
Ich möchte gerne mit htaccess folgendes hinbekommen:
Anfrage: /media/images/bild.jpg?width=100&height=150
Intern umleiten auf /includes/gd/image.php so dass ich die 3 Informationen (width, height, image) noch habe und in der image.php verarbeiten kann.
Gut. Wo stößt Du auf Probleme? Wenn Du das schon für die index machst, weisst Du ja wie es geht. Du musst Dir nur eine (andere) Rewrite Condition ausdenken, sonst kollidiert es.
# redirect images to /includes/gd/image.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)\.(gif|jpg|png|ico)$ /imcludes/gd/image.php [NC,L]
# redirect to /index.php if file does not exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.php/$1 [QSA]
So ginge das. Variablen stecken dann zum Beispiel in $_SERVER["REQUEST_URI"]
Idee war nun:
Einfach in der /media/images/ alles hart auf die /includes/gd/image.php umleiten und dort dann per $_SERVER den Rest irgendwie raus holen. Oder geht das mit htaccess noch schöner?
Was ist "hart umleiten" im Gegensatz zu mod_rewrite?
Cheers,
Baba
hi,
Ich möchte gerne mit htaccess folgendes hinbekommen:
Anfrage: /media/images/bild.jpg?width=100&height=150
Intern umleiten auf /includes/gd/image.php so dass ich die 3 Informationen (width, height, image) noch habe und in der image.php verarbeiten kann.Gut. Wo stößt Du auf Probleme? Wenn Du das schon für die index machst, weisst Du ja wie es geht. Du musst Dir nur eine (andere) Rewrite Condition ausdenken, sonst kollidiert es.
Richtig, war ja wie unten gesagt nicht meine Favorit lösung ...
[code lang=apache]# redirect images to /includes/gd/image.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*).(gif|jpg|png|ico)$ /imcludes/gd/image.php [NC,L]
Das gefällt mir eigentlich sehr gut, hätte ursprünglich alles aus /media/images nur genommen, das aber an die endung zu binden, gefällt mir fast besser!
So ginge das. Variablen stecken dann zum Beispiel in $_SERVER["REQUEST_URI"]
Idee war nun:
Einfach in der /media/images/ alles hart auf die /includes/gd/image.php umleiten und dort dann per $_SERVER den Rest irgendwie raus holen. Oder geht das mit htaccess noch schöner?
Was ist "hart umleiten" im Gegensatz zu mod_rewrite?
Ich dachte ursprünglich eigentlich dadran, alles so umzuschreiben, dass ich es direkt als $_GET abfragen kann ohne dass ich es danach noch auseinander zu nehmen brauch. Aber das ist ja auch ne kleinigkeit und schnell gemacht!
Gruß Niklas