Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Simpler FrontController

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Padal
    hat ein Thema erstellt [Erledigt] Simpler FrontController.

    [Erledigt] Simpler FrontController

    Hallo, ich hab ein grusliges Problem. Ich nutze folgenden Front-Controller, der soweit auch ganz gut funktioniert. Wenn ich allerdings: http://localhost/a:b eingebe, also ein : im URL-Pfad, bekomme ich folgende Meldung: Zugriff verweigert! Ich habe eigentlich erwartet, dass meine Fehlerseite angezeigt wird, wenn etwas nicht zutrifft. Könnt ihr mir sagen was falsch läuft.
    .htaccess
    Code:
    RewriteEngine On 
    RewriteRule ^ index.php [QSA,L]
    index.php
    PHP-Code:
    switch(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)){
        case 
    '/test':
            echo 
    'test';
            break;
        default:
            echo 
    'error';
            break;


  • tr0y
    antwortet
    Ich frag mal einfach: ist denn die rewrite mod auch aktiviert ?

    Welche Apache Version nutzt du ?

    Post 2.4 kannst du statt modrewrite auch:

    Code:
    AcceptPathInfo On
    DirectoryIndex disabled
    DirectoryIndex index.php
    FallbackResource /path/to/index.php
    verwenden.

    Deine Url findest du dann dort:
    PHP-Code:
    echo $_SERVER['PATH_INFO']; 
    httpd.conf:
    Benötigt mindestens: AllowOverride FileInfo
    Empfohlen für die Entwicklung: AllowOverride All

    Eine Woll-milch-sau .htaccess, die das korrekte "in any case" rewrite der Url erzwingt wäre:
    Code:
    Options -MultiViews
    AcceptPathInfo On
    
    RewriteEngine On
    RewriteBase /path/to/the/htaccess/directory
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [QSA,L]
    httpd.conf:
    Benötigt mindestens: AllowOverride FileInfo, Rewrite-mod
    Empfohlen für die Entwicklung: AllowOverride All, Rewrite-mod

    Einen Kommentar schreiben:


  • Padal
    antwortet
    Bei mir verhält es sich genauso. Allerdings löst ErrorDocument das Problem bei mir nicht. Ich habe
    ErrorDocument 403 /error.php in .htaccess geschrieben. Es ist aber nach wie vor gleich.

    Macht aber eigentlich auch nix. Ich habe Windows zum entwickeln und laufen lasse ich das auf Linux. ich brauche halt nur die Gewissheit, dass das kein von mir verursachter Bug ist.

    Einen Kommentar schreiben:


  • jspit
    antwortet
    Der 403 Error kommt bei mir unter XAMPP/Win nur wenn ich "localhost/a:b" aufrufe, nicht jedoch bei einem Aufruf von "localhost/test/a:b" .

    Eine eigene Fehlerseite (Stichwort ErrorDocument) löst das Problem für mich ohne PHP zu bemühen.

    Einen Kommentar schreiben:


  • Padal
    antwortet
    Danke für deine Hilfe phpyton. Den kaffee spendier ich dir trotzdem noch

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    done

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ich kann auf den : auch verzichten. Ich will nur unterbinden, falls man : in die URL eingibt, dass das Zugriff verweigert kommt. Es soll meine Fehlerseite kommen. Hier noch übrigens etwas interessantes: https://bugs.php.net/bug.php?id=66813

    Ich hab den FrontController mal entfernt und versucht die Seiten direkt anzuspringen. Das scheint irgendwie am Server (vllt. htaccess) zu liegen.

    @jspit: Ja, WIN, XAMPP.

    Einen Kommentar schreiben:


  • jspit
    antwortet
    Zitat von tr0y Beitrag anzeigen
    Doppelpunkte in virtuellen Pfaden einer Url sind möglich
    Dann sollte die Benutzung allgemein keine Probleme bereiten - aber scheinbar gibt es Ausnahmen.

    Padal:
    Muß es unbedingt der : sein ?
    Umgebung: Win XAMPP? wenn ja, hilft ev. dieser alte Beitrag Doppelpunkt in URL unter Windows Apache

    Einen Kommentar schreiben:


  • Padal
    antwortet
    Hab ich gecheckt, das ist leider nicht auf meinem Server vorhanden

    Einen Kommentar schreiben:


  • hausl
    antwortet
    Zitat von tr0y
    2. Steht das was du suchst nach dem Rewrite im PATH_INFO-Value der $_SERVER-Superglobal schon fertig gesplitted, wenn der Webserver vernünftig konfiguriert wurde.
    Hast du das schon geprüft?

    Einen Kommentar schreiben:


  • Padal
    antwortet
    Ok, und habt ihr ne Lösung für mich? Weiss grade nicht, wie ich weiterkomme?

    Einen Kommentar schreiben:


  • tr0y
    antwortet
    1. Ein URI ist kein URL
    2. Steht das was du suchst nach dem Rewrite im PATH_INFO-Value der $_SERVER-Superglobal schon fertig gesplitted, wenn der Webserver vernünftig konfiguriert wurde.

    Doppelpunkte in virtuellen Pfaden einer Url sind möglich und werden auch nicht als Port interpretiert.

    Einen Kommentar schreiben:


  • jspit
    antwortet
    Wenn ich allerdings: http://localhost/a:b eingebe, also ein : im URL-Pfad,
    Dein "grusliges Problem" hat absolut nichts mit PHP zu tun. Der Doppelpunkt ist ein reserviertes Zeichen. Da ist es nur Ok, wenn dir der Zugriff verweigert wird.


    URL-Aufbau aus Wiki
    Code:
         scheme-specific-part →                        →                       → |
         |
    http://hans:geheim@example.org:80/demo/example.cgi?land=de&stadt=aa#geschichte
    |      |    |      |           | |                 |                |
    |      |    |      host        | url-path          query            fragment
    |      |    password           port
    |      user
    scheme (hier gleich Netzwerkprotokoll)

    Einen Kommentar schreiben:

Lädt...
X