Ankündigung

Einklappen
Keine Ankündigung bisher.

ModRewrite - Ich komm einfach nicht weiter :(

Einklappen

Neue Werbung 2019

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

  • ModRewrite - Ich komm einfach nicht weiter :(

    Hallo liebe Gemeinde.
    Ich komme einfach nicht weiter und hoffe das hier jemand eine Idee hat

    Erstmal um was es geht:

    Wir haben also die DOMAIN.DE .. was ich nun möchte ist, wenn jemand, zB, folgendes eingibt:

    DOMAIN.DE/THOMAS

    dann würde ich gerne umleiten auf DOMAIN.DE/INDEX.PHP und das simulierte Unterverzeichnis THOMAS als $_REQUEST['id'] nutzen können.
    das geht auch schon wunderbar:

    PHP-Code:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond 
    %{REQUEST_FILENAME} !-d
    RewriteRule 
    ^(.*)$ index.php?id=$
    Nun gibt es auf der INDEX.PHP irgendwo einen link, zum Beispiel: SEITE2.PHP
    Wenn ich diesen klicke, bleibt in der Browserzeile zwar das THOMAS stehen, dahinter kommt auch die SEITE2.PHP
    aber weitergeleitet werde ich auf die INDEX.PHP

    Hat also jemand eine Idee das ich einfach nur folgendes habe:

    - Wenn nach dem DOMAIN.DE/THOMAS nichts mehr steht, leite um auf index.php
    - Wenn dahinter noch etwas steht, wie zB so: DOMAIN.DE/THOMAS/SEITE2.PHP dann leite weiter auf seite2.php, lass aber in der Browserzeile eben auch das DOMAIN.DE/THOMAS/SEITE2.PHP stehen.

    Es wäre mir halt lieb wenn ich das dynamisch in der htaccess halten könnte und nicht für jede neu angelegte Unterseite eine neue Rule anlegen müsste.

    Jemand eine Idee ?

    Danke und LG Patrick

  • #2
    Benutz bitte "example.de" oder "example.com" für Beispieldomains

    Deine Regel leite alles auf index.php um... sämtliches Routing erfolgt wohl in der Applikation, dort musst du ansetzen. Änderungen an .htaccess sollten nicht nötig sein.
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Hi.
      Danke Dir schonmal und sorry wegen der example.de

      Hm. Also ich bin nicht ganz neu was php angeht aber ich steh da echt grad aufm Schlauch. Klar könnte ich den THOMAS auslesen und auch welche datei aufgerufen wurde - wenn ich dann aber
      weiterleite auf die Datei die auch wirklich gebraucht wird (bsp: seite2.php), dann leitet die ja wieder um auf die index.php :/

      Wie würdest Du das Lösen?

      LG Patrick

      Kommentar


      • #4
        nö, du hast doch "not file" oder nicht ?
        versteht du den code den du gepostet hast ?

        not php und fortgeschritten ?

        Kommentar


        • #5
          Ja ich verstehe den Code den ich geschrieben habe.
          Ich bin in Sachen PHP sicherlich kein Profi aber auch kein Anfänger mehr, deswegen dachte ich das ich hier richtig bin.

          Was soll denn "not file" sein? Also ich verstene bis auf die Frage ob ich den Code verstehe, recht wenig von Deiner Aussage...

          Kommentar


          • #6
            Ah. Not File und Not Directory .. habs jetzt geschnallt.

            Vielleicht habe ich die Frage falsch gestellt:

            Ich rufe example.de/test auf. Die .htaccess leitet um wie sie soll: auf example.de/index.php und im browser bleibt example.de/test stehen.

            jetzt habe ich auf der index.php einen link. Dieser hat ein href="example.de/test/test.php" - die htaccess leitet jetzt wieder um auf example.de/index.php da es das Verzeichnis "test" ja in Wirklichkeit nicht gibt.

            Das ist mein Problem :/

            Kommentar


            • #7
              also doch ganz anders die frage


              Ich bin in Sachen PHP sicherlich kein Profi aber auch kein Anfänger
              https://www.php.de/forum/webentwickl...rf-hier-posten

              ist halt egal, wie dein knowlege ist, s.o.

              zudem ist das kein php code - oder irre ich mich ?

              um zu verstehen was da wie funktioniert kann du ein rewrite log anschalten

              Kommentar


              • #8
                Okay ich merke schon. Hier komme ich nicht weiter.
                Danke und Euch alles gute!

                Kommentar


                • #9
                  Zitat von Scriptmania Beitrag anzeigen
                  Hi.
                  Danke Dir schonmal und sorry wegen der example.de

                  Hm. Also ich bin nicht ganz neu was php angeht aber ich steh da echt grad aufm Schlauch. Klar könnte ich den THOMAS auslesen und auch welche datei aufgerufen wurde - wenn ich dann aber
                  weiterleite auf die Datei die auch wirklich gebraucht wird (bsp: seite2.php), dann leitet die ja wieder um auf die index.php :/

                  Wie würdest Du das Lösen?

                  LG Patrick
                  über ein include oder idealerweise ein Autoloading, wenn es Klassen sind. Der Hinweis, dass du das über PHP und ein Routing lösen solltest sind aber korrekt. Andere Wege führen vielleicht auch irgendwo nach Rom, sind aber viel komplizierter.

                  Kommentar


                  • #10
                    Zitat von Scriptmania Beitrag anzeigen
                    Okay ich merke schon. Hier komme ich nicht weiter.
                    Danke und Euch alles gute!
                    scheint so, routing, logging und googling ist für dich keine brauchaubare info -
                    c&p code bei forgeschritten ist einfach nicht drin, sorry

                    aber du trollst ja eh nur -

                    Kommentar


                    • #11
                      Zitat von Scriptmania Beitrag anzeigen

                      dann würde ich gerne umleiten auf DOMAIN.DE/INDEX.PHP und das simulierte Unterverzeichnis THOMAS als $_REQUEST['id'] nutzen können.
                      das geht auch schon wunderbar:

                      PHP-Code:
                      RewriteCond %{REQUEST_FILENAME} !-f
                      RewriteCond 
                      %{REQUEST_FILENAME} !-d
                      RewriteRule 
                      ^(.*)$ index.php?id=$
                      Du warst nicht weit von der Lösung entfernt. Aber wenn du einmal gegoogelt hättest, hättest du auch eine ausführliche Lösung gefunden.

                      Die Lösung sieht am Ende so aus:

                      PHP-Code:
                      RewriteEngine On

                      RewriteCond 
                      %{REQUEST_FILENAME} !-f
                      RewriteCond 
                      %{REQUEST_FILENAME} !-d
                      RewriteRule 
                      index.php [L
                      Damit wird alles, was der Apache Webserver unter einem bestimmten Ressourcennamen nicht direkt auf der Platte findet, an die index.php umgeleitet. Du brauchst an dieser Stelle auch nicht mit Regulären Ausdrücken herumzumachen. Das machst du an anderer Stelle. Deshalb kannst du dort die kürzeste Schreibweise für den RegExp-Parameter verwenden, die du dort verwenden kannst. Diese Schreibweise verbraucht am Ende auch die wenigsten CPU-Zyklen.

                      Ab Apache 2.4 kannst du auch eine Alternative zu mod_rewrite verwenden:

                      PHP-Code:
                      FallbackResource index.php 
                      Dann hast du in deiner index.php normalerweise einen Router, der dann den Rest macht. Wenn du das zu Fuß machen möchtest, dann bekommst du den Pfad+Queryparameter unter $_SERVER['REQUEST_URI']. Die Query-Parameter hättest du dann aber noch in $_GET und $_POST. Ich würde von der Verwendung von $_REQUEST grundsätzlich abraten.

                      Wenn du nur an den Pfad möchtest, dann kannst du die Pfad-Daten so auslesen:

                      PHP-Code:
                      parse_url($_SERVER['REQUEST_URI'] ?? '/'PHP_URL_PATH); 

                      Kommentar


                      • #12
                        https://www.php-rocks.de/thema/58-ei...-umsetzen.html

                        [MOD: verschoben von PHP-Fortgeschritten]
                        Competence-Center -> Enjoy the Informatrix
                        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                        Kommentar


                        • #13
                          Vielen vielen Dank rkr!!!!!

                          Kommentar

                          Lädt...
                          X