[gelöst] mod rewrite von domain.de/category zu domain.de/index.php?cat=category

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

  • #16
    An der .htaccess liegt es definitiv nicht. Erstell doch mal bitte eine index.php
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #17
      Ok, also ich habe jetzt eine index.php und die .htaccess

      .htaccess
      Code:
      RewriteEngine On
      RewriteRule ^(.*)$ index.php?cat=$1
      index.php
      PHP-Code:
      <?php
          
      echo "index cat: ".$_GET['cat'];
      ?>

      Wenn ich jetzt domain.de/blub aufrufe bekomme ich folgende ausgabe:

      Code:
      index cat: index.php
      Das würde heißen, dass die .htaccess an index.php?cat=index.php weiterleitet.
      Eigentlich sollte es

      Code:
      index cat: blub
      ausgeben.


      Woran liegt das?

      Gruß
      Zuletzt geändert von einermeiner; 26.10.2009, 20:51.

      Kommentar


      • #18
        Dann hast du die max-redirects-Direktive (oder so ähnlich) nicht gesetzt, bzw. nicht auf 1, wie bei mir zum Beispiel.

        Dann ändere die .htaccess mal auf
        Code:
        RewriteEngine on
        RewriteRule !^index\.php - [C]
        RewriteRule ^(.*)$ index.php?cat=$1 [L]
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #19
          Ja wunderbar so funktioniert es, aber was genau ist diese max-redirects-Direktive?
          Oder genauer gesagt was bewirkt

          Code:
          RewriteRule !^index\.php - [C]
          ?

          Gruß

          Kommentar


          • #20
            Das darfst du jetzt aber selbst mal nachlesen, wenn es dich interessiert.

            Zitat von einermeiner Beitrag anzeigen
            was genau ist diese max-redirects-Direktive?
            mod_rewrite - Apache HTTP Server

            Zitat von einermeiner Beitrag anzeigen
            Code:
            RewriteRule !^index\.php - [C]
            ?
            mod_rewrite - Apache HTTP Server
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #21
              Hab ich natürlich schon, aber ich habs nicht verstanden.
              Für mich würde die Zeile bedeuten: "Die nächste Zeile wird nur ausgeführt wenn index.php nicht existiert", aber das is total unlogisch.

              Wo liegt da mein Denkfehler?

              Und noch was:
              Die Variante funktioniert ja einwandfrei, nur tritt jetzt ein neues Problem auf. Wenn ich das auf einer Website versuche, funktionieren keine CSS Styles, JS und Bilder mehr. Also keine über

              HTML-Code:
              <link rel="stylesheet" href="/screen.css" type="text/css" />
              Ich nehme an die werden auch nach index.php?cat=/screen.css weitergeleitet.

              Kann ich dem .htaccess mitgeben das er die ganze Weiterleitung bei .jpg, .css und .js auslässt?

              Ich hab zwar das Manuel und ein paar Tutorials gelesen, aber irgendwie werde ich aus denen nicht schlau.

              Gruß
              Zuletzt geändert von einermeiner; 27.10.2009, 09:14.

              Kommentar


              • #22
                Zitat von einermeiner Beitrag anzeigen
                Mit
                Code:
                RewriteEngine on
                 RewriteRule ^(.*)$ index.php?cat=$1
                funktioniert es leider nicht.
                Natürlich nicht - denn dieses Muster trifft auch auf index.php zu, so dass du in einer Endlosschleife landest.

                Du könntest bspw. keinen Punkt im Muster erlauben, wenn du diesen nicht brauchst; oder auch per RewriteCond physisch existierende Dateien/Verzeichnisse vom Rewriting ausschliessen.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #23
                  Natürlich nicht - denn dieses Muster trifft auch auf index.php zu, so dass du in einer Endlosschleife landest.
                  Das versteh ich nicht. Ich zerteil mal das ganze:

                  Also mit "RewriteEngine on" schalte ich das Modul an und ermögliche das Rewriting.

                  Mit "RewriteRule" erstelle ich eine neue Regel.

                  "^" bedeutet, am Anfang der Url
                  "(.*)" bedeutet kein oder mehrere Zeihen
                  Und mit "$" speichere ich das gesuchte in eine variable, in dem fall in $1
                  und dann leite ich das ganze einfach an index.php?cat=$i um

                  Wenn jemand domain.de/index.php aufrufen würde, müsste es mir "index cat = index.php" ausgeben.

                  Ich verstehe nicht wo da eine Endlosschleife entsteht.

                  Wenn jetzt domain.de/blub eingegeben wird müsste ich "index cat = blub" bekommen.

                  Mit "RewriteRule !^index\.php - [C]" funktioniert das auch, ich versteh nur nicht warum.

                  per RewriteCond physisch existierende Dateien/Verzeichnisse vom Rewriting ausschliessen.
                  Meinst du damit, das ich dann dort alle Dateien ablegen soll, die eingebunden werden, wie z.B. CSS und JS?

                  Gruß

                  Kommentar


                  • #24
                    Zitat von einermeiner Beitrag anzeigen
                    Wenn jemand domain.de/index.php aufrufen würde, müsste es mir "index cat = index.php" ausgeben.

                    Ich verstehe nicht wo da eine Endlosschleife entsteht.
                    Wenn eine RewriteRule angewendet wird, entsteht dadurch ja eine neue URL. Mit dieser neuen URL beginnt der ganze Rewrite-Prozess von vorn. Weil du mit ^(.*)$ einfach alles matchst, wird immer wieder umgeschrieben, von vorn begonnen, gematcht, umgeschriebene, von vorn begonnen, ...

                    Meinst du damit, das ich dann dort alle Dateien ablegen soll, die eingebunden werden, wie z.B. CSS und JS?
                    Sollst du nicht. Lies mod_rewrite - Apache HTTP Server

                    Kommentar


                    • #25
                      Ok also das mit der Endlosschleife habe ich verstanden.

                      Aber was meinst du mit:

                      Sollst du nicht. Lies mod_rewrite - Apache HTTP Server
                      Ich soll keine Verzeichnisse ausschließen, aber was sonst? Ich hab das bestimmt schon 3 - 4 mal gelesen, aber mir fehlt der Ansatz.

                      Gruß

                      Kommentar


                      • #26
                        Hallo nochmal,

                        alles, was du nicht "rewriten" willst, gibst du genau so an, wie auch die index.php ausgeschlossen wird:

                        Code:
                        RewriteEngine on
                        RewriteRule !^index\.php - [C]
                        RewriteRule !^style\.css - [C]
                        RewriteRule !^script\.js - [C]
                        RewriteRule !^(.+)\.pdf$ - [C]
                        RewriteRule !^img/ - [C]
                        RewriteRule !^download/ - [C]
                        RewriteRule ^(.*)$ index.php?cat=$1 [L]
                        Gruß,

                        Amica
                        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                        Super, danke!
                        [/COLOR]

                        Kommentar


                        • #27
                          Toll da hät ich auch drauf kommen können Danke

                          So funktioniert es wenn ich ein css file so eingebunden habe:

                          PHP-Code:
                          echo "<link rel=\"stylesheet\" href=\"screen.css\" type=\"text/css\" />"
                          Aber nicht wenn ich es so eingebunden habe:

                          PHP-Code:
                          echo "<link rel=\"stylesheet\" href=\"/screen.css\" type=\"text/css\" />"
                          Also sobald ich einen Slash / vor die screen.css Datei schreibe funktioniert es nicht mehr. Allerdings soll das auch funktionieren.

                          So habe ich es schon versucht, hat aber nicht geklappt:
                          Code:
                          RewriteEngine on
                          RewriteRule !^screen\.css - [C]
                          RewriteRule !^/screen\.css - [C]
                          RewriteRule !^index\.php - [C]
                          RewriteRule ^(.*)$ index.php?cat=$1 [L]
                          Gibt es eine Möglichkeit, dass es auch mit dem Slash funktioniert?

                          Gruß

                          Kommentar


                          • #28
                            Zitat von AmicaNoctis Beitrag anzeigen
                            alles, was du nicht "rewriten" willst, gibst du genau so an, wie auch die index.php ausgeschlossen wird: [...]
                            Dann muss er ja bei jeder neu erstellten Datei seine Regel anpassen...

                            Kommentar


                            • #29
                              Zitat von TobiaZ Beitrag anzeigen
                              Dann muss er ja bei jeder neu erstellten Datei seine Regel anpassen...
                              Muss er nicht. Das sollte erstens als Beispiel dienen und zweitens hab ich damit ja auch gezeigt, dass man ganze Verzeichnisse (z. B. img, download), Dateitypen (*.pdf) und auch einzelne Dateien ausschließen kann. Was war daran jetzt so furchtbar?
                              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                              Super, danke!
                              [/COLOR]

                              Kommentar


                              • #30
                                Nene, das passt schon. Ich klammere alle .css, .js und .jpg Dateien aus.

                                So sieht die .htaccess Datei aus:

                                Code:
                                RewriteEngine on
                                RewriteRule !^(.*)\.css - [C]
                                RewriteRule !^(.*)\.js - [C]
                                RewriteRule !^(.*)\.jpg - [C]
                                RewriteRule !^index\.php - [C]
                                RewriteRule ^(.*)$ index.php?cat=$1 [L]
                                Mein einziges Problem ist nur das das nicht reagiert wenn ich eine .css mit

                                PHP-Code:
                                echo "<link rel=\"stylesheet\" href=\"/screen.css\" type=\"text/css\" />"
                                einbinden will. Sobald ein / davor steht läuft das ganze nicht.

                                Habt ihr dafür eine Lösung? Ich find einfach keine.

                                Gruß

                                Kommentar

                                Lädt...
                                X