Survival Mattini: .htaccess ersatz bei Nginx

Hallo,

ich habe gerade das Vergnügen (zum ersten mal in meinem Leben) einen Apache Server auf NginX um zu stellen (und das mit meinen zwei linken Händen ;-) )

Ich habe es sogar geschafft einen Großteil der Rewrite Rules um zu schreiben.

Zum Problem: NGINX verwaltet nicht wie der Apache. Der Apache kann auch htacces in Unterverzeichnisen verwerten, wärend Nginx diese Zentral verwaltet. Daher habe ich ein Problem bei dem nicht nicht weiß wie ich es lösen soll. Der Apache im hat im Verzeichnis /img/ eine .ht mit folgendem Inhalt:

RewriteEngine On
RewriteRule ^(.*\.png(/.*)?)$ index.php?datum=$1 [L,QSA] 

Für NginX wäre die Anweisung:

rewrite ^/(.*\.png(/.*)?)$ /index.php?datum=$1 last;

Aber wie bringe ich nginX die Anweisung mit dem IMG bei? Bei

rewrite ^/img/(.*\.png(/.*)?)$ /img/index.php?datum=$1 last;

verweiget der Nginx seinen Dienst. Könnte bitte jemand mit einer besseren Konstelation als zwei linken Händen einen Blick auf das Problem werfen.

Vielen Dank euer Mattini

akzeptierte Antworten

  1. Niemand eine Idee?

    1. Hallo Survival,

      ich bin kein nginxeer und habe auf Dedlfix gehofft, der nginx-Kenntnisse hat.

      Vor allem hat er das passende Zitat 😜.

      Dem bin ich gefolgt und habe mich an Hand des nginx 1.12 unserer Selfhtml Offline-Installation in nginx etwas eingelesen - und ich würde behaupten: In deiner Rewrite-Zeile ist nichts falsch, der Fehler muss anderswo liegen.

      Ich musste trotz Handbuchlektüre noch eine Weile basteln, bis ich kapiert hatte was ich da eigentlich tat, d.h. ich musste mein Tun überprüfen, ich musste herausfinden, was gerade eigentlich falsch ist, ich musste DEBUGGEN.

      Und damit sind wir beim Problem: "funktioniert nicht" funktioniert nicht als Fehlerbeschreibung.

      nginx schreibt Fehler auf die Konsole, in eine Error-Logdatei und in eine Access-Logdatei. Das kann man in der nginx.conf aktivieren (error_log und access_log Direktiven). Welchen Aufschluss geben diese Quellen über das Problem, das Du mit deinem Rewrite hast?

      Steht deine index.php übrigens im / oder im /img Ordner des Web? Ich weiß nicht genau, wie .htaccess Dateien hier zu lesen sind.

      Und eine Grundsatzfrage, die aber mit deinem Fehler nichts zu tun hat:

      Was soll das: ^(.*\.png(/.*)?)$? Hat da jemand beim Aufbau der Apache Rewrite-Rules stumpf eine Rewrite-Role für PHP Scripte kopiert, ohne nachzudenken? Da wird ein mögliches Suffix hinter .png zusätzlich gematcht, was bei Bilddateien eher ungewöhnlich ist. Es würde vermutlich niemand eine /img/foo.png/abc abrufen - es sei denn, dein Cache-Buster arbeitet auf diese Weise. Aber in dem Fall würde man doch den /abc Teil eher wegstrippen, weil andernfalls die Ressource gar nicht gefunden wird. Deine Rewrite-Rule übernimmt ihn aber einfach.

      Rolf

      --
      sumpsi - posui - obstruxi
      1. Hallo Rolf,

        du darfst lachen (ok alle anderen auch) ich habe es in der Reihenfolge immer hinter den Modrewrite Reglen für Wordpress nachdem ich Sie jetzt davor gesetzt habe funktioniert es.

        Ich könnte mich selbst Ohrfeigen. Danke für deine/eure Hilfe