Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit htaccess

Einklappen

Neue Werbung 2019

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

  • Problem mit htaccess

    Hallo, trotz Recherche und reichlich probieren bekomme ich mein Problem nicht gelöst.

    Folgendes Problem stellt sich und ich bin mir ziemlich sicher das ich einen Denkfehler habe. Um mein Script ausführen zu können benötige ich den Namen der hinter dem / nach der Domain steht. Beispiel einer URL:

    localhost/app/post?id=1 in diesem Fall brauche ich das post. Ich habe mit $_SERVER['PATH_INFO'] getestet und bekomme bei Unterseiten auch sauber in mein Script übergeben.

    Das Problem ist dabei wenn ich die Startseite nur mit / am Ende aufrufe funktioniert $_SERVER['PATH_INFO'] nicht. Es wird dann eine Fehler ausgegeben.

    Notice: Undefined index: s in C:\xampp\htdocs\app\index.php

    Also habe ich mir gedacht ich löse das mit einer htaccess. Die sieht folgend aus:
    Code:
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^.*$ index.php?s=index
    </IfModule>
    Nun funktioniert die Startseite. Die Informationen die ich benötige hole ich mit der $_GET Funktion.

    Ich dachte mir dann wenn kein Index übergeben wird soll die $_SERVER['PATH_INFO'] ausgeführt werden.
    Dazu folgender Code:


    PHP-Code:
    $pathInfo $_GET['s'];

    if (
    $pathInfo != "index") {
        
    $pathInfo $_SERVER['PATH_INFO'];
    }
    var_dump($pathInfo); 
    Der var_dump gibt mir beim Aufruf localhost/app/post?id=1 string(5) "index" zurück.

    Was kann ich mit der htaccess anstellen damit ich post in mein Script übergeben bekomme. Oder gibt es noch eine elegantere Lösung?

    Meine letzter Versuch mit der htaccess ist auch fehlgeschlagen:

    Code:
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^.*$ index.php?s=index
        RewriteRule ^.*$ index.php?s=$1
    </IfModule>
    Ich hoffe ich habe mich soweit verständlich ausgedrückt und freue mich auf eure Antworten.

    VG Petja

  • #2
    Ich versteh nicht, was das werden soll. In 99,999% der Fälle reicht folgende Regel aus:
    Code:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
    Das ganze Rumgehampel mit $_GET['s'] braucht man nicht, da eh alle notwendigen Informationen in der URL stehen ($_SERVER['REQUEST_URI']).

    Kommentar


    • #3
      Hallo, danke für die schnelle Antwort. Es ist mit Sicherheit kein Sonderfall und ich habe versucht mich verständlich auszudrücken. Die gepostete Regel funktioniert nicht dann wird die Seite nicht gefunden.
      Ich versuche es noch mal mit der Erklärung

      Wenn ich localhost/app/index.php/index aufrufe funktioniert das Script einwandfrei.
      Wenn ich localhost/app/index.php/post?id=1 aufrufe funktioniert das Script einwandfrei.

      Der Code zum Script:

      PHP-Code:
      $pathInfo $_SERVER['PATH_INFO'];

      $routes = [

          
      '/index' => [
              
      'controller' => 'postsController',
              
      'method' => 'index'
          
      ],

          
      '/post' => [
              
      'controller' => 'postsController',
              
      'method' => 'show'
          
      ],

      Was ich aber möchte ist wenn ich localhost/app/ aufrufe das /index an das Script übergeben wird.
      und wenn ich localhost/post?id=1 möchte ich das /post an das Script übergeben wird.

      Vielleicht hilft das weiter mein Problem zu lösen.

      Danke VG Petja

      Kommentar


      • #4
        Warum so umständlich? Das Script sieht doch, was in der URL steht. Warum kann es nicht richtig darauf reagieren? Wozu muss etwas anderes übergeben werden?

        Kommentar


        • #5
          Das Script funktioniert. Ich würde gern die URL Struktur verbessern. Das ist das Ziel.

          Ausgangslage:

          localhost/app/index.php/index
          localhost/app/index.php/post?id=1

          Ziel:

          localhost/app/
          localhost/app/post?id=1

          VG Petja

          Kommentar


          • #6
            Zitat von petja Beitrag anzeigen
            Das Script funktioniert. Ich würde gern die URL Struktur verbessern. Das ist das Ziel.

            Ausgangslage:

            localhost/app/index.php/index
            localhost/app/index.php/post?id=1

            Ziel:

            localhost/app/
            localhost/app/post?id=1
            Das hat aber nichts mit .htaccess zu tun. Das musst du in deiner Anwendung ändern.

            Kommentar


            • #7
              Danke für die Antwort. Ich hatte gedacht ich könnte das mit einer htaccess lösen. Um die Anwendung zu ändern habe ich nicht den richtigen Ansatz gefunden deswegen die Frage nach der htaccess. Vielleicht brauche ich mal den richtigen Anstupser.
              VG Petja

              Kommentar


              • #8
                Was genau ist unklar? Du musst doch wissen, wie deine Anwendung funktioniert. Das kann dir kein Externer erklären.

                Kommentar


                • #9
                  Ziel:
                  Code:
                  localhost/app/
                  localhost/app/post?id=1
                  Ich finde ja noch netter sieht das aus:

                  Code:
                  localhost/app/post/1
                  The string "()()" is not palindrom but the String "())(" is.

                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Hallo, das sieht natürlich noch besser aus keine Frage. Das wäre der nächste Schritt. Erstmal soll es grundsätzlich mit der kurzen url funktionieren. VG Petja

                    Kommentar


                    • #11
                      Der beste Lösungsansatz wurde bereits in #2 von hellbringer gezeigt.
                      Wenn das verstanden und richtig umgesetzt wird, funktioniert es sowohl mit kurzen, als auch mit langen URLs.

                      Ich denke, Du suchst grundlegend sowas hier: https://www.php-rocks.de/thema/58-ei...-umsetzen.html
                      Competence-Center -> Enjoy the Informatrix
                      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                      Kommentar

                      Lädt...
                      X