PHP zu HTML machen

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

  • PHP zu HTML machen

    Hallo,

    ich habe da eine Frage. Ich weiß das ich eine Htaccess erstellen muss und wollte fragen ob ihr mir dabei helfen könnt!

    Ich möchte gerne folgendes:

    Code:
    seite.de/meinekatzen > 
    index.php?kat=meinekatzen
    
    seite.de/meinekatzen/heiko-ist-krank_5 >
    seiteindex.php?kat=meinekatzen&beitrag=5
    könnt ihr mir dabei helfen?

    gleichzeitig ist mir aber wichtig, dass folgendes nicht geht:

    Code:
    seite.de/meinekatzen/nicht-existierender-name_5 >
    seiteindex.php?kat=meinekatzen&beitrag=5
    daher wollte ich gerne die richtige URL in der Datenbank speichern. In irgendeiner Form abfragen was für eine URL der Besucher eingetippt hat und sollte die URL nicht mit der in der Datenbank übereinstimmen den Besucher per 301 auf die richtige URL weiterleiten. Jetzt habe ich halt nur Angst, dass er die URL evtl. nicht richtig abfragt und dadurch eine Dauerschleife entsteht. Gibt es da eine bessere Lösung bzw. könnt ihr mir helfen die beiden Sachen umzusetzen?

    lg,
    Jenny

  • #2
    In modernen Frameworks nennt sich das Routing.
    Schau dir mal an wie z.B. Symphony oder Das ZF dieses abhandeln.
    Wir werden alle sterben

    Kommentar


    • #3
      Ich frage bei mir ID, Kat und Seitenname oder Titel ab, ob in DB vorhanden. Weil sich meinekatzen als kat bereits aus /pfad ergibt, benötige ich für kat kein zusätzliches Parameter-Werte-Paar. Falls ID, Kat oder Seitenname nicht übereinstimmend in DB vorhanden, erfolgt eine Weiterleitung auf eine Übersichtsseite.

      seite.de/meinekatzen/heiko-ist-krank_5 /seiteindex.php?kat=meinekatzen&beitrag=5

      Code:
      RewriteRule ^meinekatzen/([a-z-]+)_([0-9]+)\.html$ /meinekatzen/seiteindex.php?seitenname=$1&beitrag=$2 [L]
      Wenn sich das bei Dir nicht aus /pfad ergibt, dann solltest kat mit aufnehmen. Doch dann halt nach ID, Kat und Seitenname ordnen.

      Code:
      RewriteRule ^meinekatzen/([a-z-]+)_([0-9]+)\.html$ /seiteindex.php?kat=meinekatzen&seitenname=$1&beitrag=$2 [L]
      Zuletzt geändert von Melewo; 06.04.2013, 14:33.

      Kommentar


      • #4
        vielen vielen Dank Melewo !

        Der fertige Code müsste dann so aussehen?

        Dann dürfen im namen des Artikels aber keine Buchstaben vorkommen oder? Also "Heiko ist 5 Jahre alt geworden" würde nicht als Titel gehen oder doch?

        Code:
        RewriteRule ^([a-z-]+)/([-0-9a-z]+)_([0-9]+)\.html$ /seiteindex.php?kat=$1&seitenname=$2&beitrag=$3 [L]
        Zuletzt geändert von Jennifer22; 06.04.2013, 15:41.

        Kommentar


        • #5
          "Heiko ist 5 Jahre alt geworden"
          Und Heiko ist ein Katzenname?

          Wenn die Seite "heiko-ist-5-jahre-alt-geworden_123.html" heißt, dann sollte Deine Regel funktionieren. Wenn die sich aber "Heiko-ist-5-Jahre-alt-geworden_123.html" nennt, dann solltest Du am Ende [NC, L] verwendenden oder ([-0-9a-zA-Z]+), denke ich mir. Ansonsten sollte alles stimmen, so wie es ausschaut.

          Kommentar


          • #6
            danke

            Kommentar


            • #7
              Hallo noch mal!

              Habe jetzt einen großes Teil meiner Seite fertig http://seismart.de/

              Problem: Ihr könnte ja mal testweise einen Beitrag anklicken. Ich komme zwar wie in der htcceess definiert auf die show.php aber leider bekomme ich keine Werte angezeigt:

              Code:
              RewriteEngine on
              RewriteRule ^([a-z-]+)/([-0-9a-z]+)_([0-9]+)\.html$ /show.php?kat=$1&seitenname=$2&beitrag=$3 [L]
              PHP-Code:
              if (empty($_GET['kat']) == TRUE){$kat '0';}else{$add $_GET['kat'];}
              if (empty(
              $_GET['seitenname']) == TRUE){$seitenname '0';}else{$add $_GET['seitenname'];}
              if (empty(
              $_GET['beitrag']) == TRUE){$beitrag '0';}else{$add $_GET['beitrag'];}

              echo 
              'show.php wird angezeigt <br /><br />';
              echo 
              $kat.'<br /><br />';
              echo 
              $seitenname.'<br /><br />';
              echo 
              $beitrag.'<br /><br />'
              was mache ich falsch? Und direkt noch eine Frage: Kann ich es irgendwie hinbekommen, dass ALLES nur mit seismart.de erreichbar ist? also ohne www? Also auch wenn ich etwa einen den unteren Link mit www aufrufen würde zur URL OHNE www weitergeleitet werde?

              http://seismart.de/amazon/wie-kann-m...tkarte_13.html

              lg,
              Jenny

              [COLOR="red"]Nachtrag:[/COLOR] haha, man sollte schon die Variablen richtig abfragen *peinlich* könnt ihr mir trotzdem mit dem www helfen?
              Zuletzt geändert von Jennifer22; 09.04.2013, 15:07.

              Kommentar


              • #8
                was mache ich falsch? Und direkt noch eine Frage: Kann ich es irgendwie hinbekommen, dass ALLES nur mit seismart.de erreichbar ist? also ohne www? Also auch wenn ich etwa einen den unteren Link mit www aufrufen würde zur URL OHNE www weitergeleitet werde?
                Ich weiß nicht so ganz, was du meinst........
                Aber, wie wäre es mit einer Alternative?

                Code:
                RewriteEngine on 
                RewriteCond %{REQUEST_FILENAME}                 !-f 
                RewriteCond %{REQUEST_FILENAME}                 !-d 
                RewriteRule ^(.*)$                         index.php  [QSA,L]
                Den ursprüngliche URI findest du in _SERVER (ganz ohne www und Host) und kannst sie völlig entspannt im PHP, also in deinem Frontcontroler bzw. Router zerlegen.
                Wir werden alle sterben

                Kommentar


                • #9
                  Ich habe gerade mal weiter gespielt:

                  Code:
                  RewriteEngine on
                  RewriteRule ^([a-z-]+)/([-0-9a-z]+)_([0-9]+)\.html$ /show.php?kat=$1&seitenname=$2&beitrag=$3 [L]
                  http://seismart.de/amazon/ > leitet leider nicht weiter auf show.php?kat=$1

                  und mit dem www. meine ich, dass wenn man eine Seite von mir mit www öffnet (egal welche), dass er dann auf die Version ohne www weiterleitet.

                  Ich habe halt mal gelesen, dass es schlecht ist für Google wenn eine Seite über zwei stellen erreichbar ist (mit und ohne www) daher möchte ich anfragen mit www. gerne auf die Version ohne www weiterleiten.

                  @combie deinen Code verstehe ich leider nicht, nicht mal ansatzweise bei dem RewriteRule Zeug was ich jetzt benutze verstehe ich immerhin "grob" die Logik dahinter Deshalb würde ich es (wenn es geht) gerne weiter benutzen.

                  Kommentar


                  • #10
                    Zitat von Jennifer22 Beitrag anzeigen
                    und mit dem www. meine ich, dass wenn man eine Seite von mir mit www öffnet (egal welche), dass er dann auf die Version ohne www weiterleitet.
                    Standard-Domain:

                    Code:
                    RewriteCond %{HTTP_HOST} ^www\.seismart\.de$
                    RewriteRule ^(.*)$ http://seismart.de/$1 [L,R=301]
                    Für unterschiedliche URIs musst Du auch unterschiedliche Regeln entwerfen. Eine Regel, die für 3 Parameter-Werte-Paare gedacht ist, kann nicht auf eine URI mit nur einem Parameter-Werte-Paar zutreffen.

                    Zitat von Jennifer22 Beitrag anzeigen
                    "http://seismart.de/amazon/" > leitet leider nicht weiter auf show.php?kat=$1
                    Das Beispiel sollte eigentlich das tun, was Du von Deinem Beispiel mit amazon/ erwartest:

                    Code:
                    RewriteRule ^([a-z-]+)/$ /show.php?kat=$1 [L]
                    Wichtig wäre aber, dass die Regeln sich nicht gegenseitig behindern. Würde deshalb im Zweifel eventuell lieber verwenden:
                    Code:
                    RewriteRule ^amazon/$ /show.php?kat=amazon [L]
                    Zuletzt geändert von Melewo; 09.04.2013, 15:53.

                    Kommentar


                    • #11
                      Ein Traum! Es funktioniert alles!!! Danke danke danke Melewo!!!!

                      Kommentar

                      Lädt...
                      X