.htaccess caching => internal server error

  • Hallo liebe netcup-Community!


    Ich arbeite zur Zeit an meinem Schulprojekt und bin dabei auf ein Problem gestoßen. Bevor ich jetzt den Support nerve frage ich lieber erstmal hier.:D


    Bei dem Projekt handelt es sich um einen Funktionsgraphenzeichner auf PHP-Basis. Der Benutzer gibt eine oder mehrere Funktionen ein, die anschließend in das danebenstehende Bild eingezeichnet werden. Folglich verändert sich das Bild bei jedem neuen Seitenaufruf.


    Mit Firefox und Chrome ist das ganze auch kein Problem, aber der IE (alle Versionen 5-8) cachen das Bild beim ersten Besuch und zeigen daraufhin immer das selbe an.


    Deswegen habe ich mal das Internet und Google zur Hilfe geholt um per .htaccess das cachen abzuschalten.


    Da jedoch alle Versuche in einem Internal Server Error scheiterten, obwohl sie zu 99%iger Sicherheit fehlerfrei eingegeben wurden, glaube ich nun, dass es mir gar nicht möglich ist das Problem per .htaccess zu lösen, da Netcup gewisse Funktionen gesperrt hat.



    Ich poste mal ein paar .htaccess Ansätze, die alle zu dem besagten Internal Server Error (500) führen:


    Code
    <Files *>
    Header set Cache-Control: "private, pre-check=0, post-check=0, max-age=0" Header set Expires: 0 Header set Pragma: no-cache 
    </Files>


    Code
    <FilesMatch "\.(jpg|png|gif)$">
    Header set Cache-Control "max-age=0, public, must-revalidate"
    </FilesMatch>


    Code
    <IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault A0
    ExpiresByType image/gif A0
    ExpiresByType image/png A0
    ExpiresByType image/jpeg A0
    </IfModule>


    die .htaccess-Datei und die Bilder ("cood.png", "cood.jpg", "cood.gif") liegen unter http://uwe-hendrich.w5100.netcup.net/xplott/images/coods/
    EDIT: Ich habe das Webhostingpaket Business1024



    Vielen Dank im Voraus
    Alex

  • Es kann gut sein, dass solche Manipulationen via Apache Config verboten sind. Da kann aber nur das Netcup Team was zu sagen.
    Alternativ kannste den header in der PHP Datei definieren.
    [PHP]<?php


    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate('D, d M Y H:i:s') . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: pre-check=0, post-check=0'", false);
    header("Pragma: no-cache");
    header("Content-type: text/html; charset=ISO-8859-1");


    ?>[/PHP]Diese Angabe muss vor der Ausgabe jedlicher Zeichen an den Browser gemacht werden. Also kein echt oder anderen kram.
    Nach diesen Zeilen kann man wie gewohnt weiter proggn.

  • Oder du übergibst einen Dummy-GET-Parameter an das Script im img-Tag, dann glaubt der Browser es ist jedes mal ein anderes. Die Lösung von sim4000 ist aber besser ;)



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • danke für die schnellen antworten!


    das Bild wird bisher durch ein script aus index.php gespeichert und dann in per <img>-tag eingefügt. also das bild wird nicht direkt von einem PHP-script ausgegeben.


    jedoch hat mich ein freund gestern auch auf ein solches workaround hingewiesen, dass ich die datei erst abspeicher und dann per script aus dem img-tag mit readfile() ausgebe. dann kann ich in dem script auch per PHP die header bearbeiten, so wie sim4000 geschrieben habe.


    diesen workaround finde ich jetzt jedoch nicht als beste lösung, und da mein info-lehrer das projekt auch bewerten wird, wäre mir eine .htaccess Lösung sehr viel lieber und unkomplizierter.
    sollte es per .htaccess nicht gehen, dann werde ich das per PHP-workaround lösen.



    mal sehen was das netcup-team dazu sagt :D.

  • Zitat von sim4000;3744

    Es kann gut sein, dass solche Manipulationen via Apache Config verboten sind.


    Es könnte auch einfach das entsprechende Modul nicht aktiviert sein.


    Allerdings ist auch der Ansatz von Christian (killerbees19) durchaus verbreitet. Einfach sowas wie
    [HTML]<img src="bild.jpg?nocache=<?php echo time(); ?>" />[/HTML]

  • es klappt!


    vielen dank für die tipps!


    habe das problem jetzt durch roberts vorschlag gelöst:


    [HTML]<img src="images/coods/cood.<?=$image->format?>?nocache=<?=time()?>" id="coordinatesystem" alt="Koordinatensystem" />[/HTML]


    danke, danke danke!

  • Sorry, wenn ich mich nochmals einmische, aber die Kurzform der PHP-Tags (überhaupt die für die Ausgabe), solltest du dir lieber nicht angewöhnen, sonst wirst du irgendwann plötzlich einmal Probleme haben, weil sie auf einem System deaktiviert sind :D


    Also lieber gleich <?php und echo :)



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • danke, habe es gerade angepasst.


    ich hatte es zum glück nur an 2 stellen eingesetzt.


    ansonsten setze ich auch immer auf <?php, denn wer weiß was zukünftige versionen alles für überaschungen bringen :D