.htaccess rewrite funktioniert nicht

  • Guten Tag Community,

    ich habe in einem Subfolder meiner Domain eine index.php liegen, die als Router für diesen Unterordner fungieren soll. (Der Subfolder hat den Name api)

    Im Verzeichnis <domain>/api liegen also folgende Dateien:


    index.php

    .htaccess

    ...(und noch diverse php-files, die die index.php benötigt)


    In der .htacces findet ein Rewrite statt, der alle Pfade die mit <domain>/api beginnen an die index.php weiterleitet.


    Apache Configuration
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule . index.php [L]

    Als RouterKlasse wird AltoRouter verwendet.


    Ich habe den ganzen Mechanismus lokal mit XAMPP getestet und alles war super.


    Leider funktioniert das ganze im Webhosting nicht. (Ich habe das kleinste Webhosting 1000 Paket)


    Die GET Abfragen funktionieren wie gehabt. Nur die POST Abfragen werden scheinbar in GET umgewandelt und deshalb antwortet die index.php nicht korrekt.


    Ich glaube das Problem ist, dass netcup einen Nginx als Reverse Proxy benutzt und dieser POST in GET umwandelt.


    Kann das jemand bestätigen?


    Gibt es eine Möglichkeit das Problem zu lösen und die POST Abfragen unverändert zum Apache durchzuschleifen (der Rewrite passiert ja auch erst auf dem Apache)?


    Grüße Manuel

  • Du kannst versuchen im WCP unter "Einstellungen für Apache & nginx" bei "Intelligente Bearbeitung statischer Dateien" den Haken rauszunehmen. Wenn der Beschreibungstext stimmt, werden dann Anfragen und Antworten von nginx ohne Modifikation an den Apache weitergegeben.

  • Hallo Freunde,

    Patrick0815, ich verstehe nicht was zu meinst. Ich will eher nginx deaktivieren als apache.


    tab, das habe ich bereits versucht aber scheinbar funktioniert das auch nicht.

    Im Postman kommt die Antwort immernoch vom nginx.

    Oder kann jemand sagen, wie schnell die Änderungen im WCP aktiv werden? Den 5 Minuten traue ich nicht so.


    Grüße Manuel

  • Hintergrundinfo: Das ganze soll mir einige simple REST-Service bereitstellen.

    Das Interessante ist, dass ich bereits ähnliche Aufrufe mache, allerdings ohne Router und mit angabe des kompletten Pfades. Dort funktioniert auch POST problemlos. (Das ist allerdings dann meiner Meinung nach nur "Pseudo"REST, da man ja den Namen des php files im Pfad angibt.

  • Hmm, wenn POST ohne den Router funktioniert und mit Router nicht, mal völlig unabhängig davon, was da an Daten geschickt wird, dann wäre nach meinem Verständnis doch eher der Router verdächtig. Der Proxy wird ja wohl nicht irgendwie prüfen, ob er da Daten an einen Router sendet oder nicht und dementsprechend unterschiedlich verfahren. Oder hast du vielleicht im Dokumentenstamm-Verzeichnis (aka document root) der Domain noch eine .htaccess liegen, die da dazwischenfunkt?

  • OK, ich habe das Problem gefunden. Bei meinen Postman-Tests hat in der domain das "https://www." gefehlt.

    Kann man irgendwie einstellen, dass das irgendwie weitergeleitet wird von der Domain ohne "https://www." ?

  • Deine Frage war ob nginx deaktiviert werden kann, das Webhostingpaket erlaubt dies jedoch nicht, nur der Apache kann mit den genannten Einstellungen deaktiviert werden.

    Ich hätte natürlich einfach nur mit nein antworten können ?

  • Schau in den Browsertools, welche Umleitungen ggf stattfinden. Ohne Domainnamen ist auch meine Glaskugel blind. Ich kann nur sagen, bei mir funktioniert die im WCP eingestellte Umleitung. Eventuell brauchst du noch eine Umleitung auf https, aber das kannst du alles in den Browsertools sehen.