Anzeige

Hilfe bei Rewrite Engine

Hilfe bei Rewrite Engine | PSD-Tutorials.de

Erstellt von erti, 20.11.2006.

  1. erti

    erti Blabubb

    Dabei seit:
    24.07.2006
    Beiträge:
    221
    Geschlecht:
    männlich
    Hilfe bei Rewrite Engine
    Hi!

    Erstmal vorweg, ich wusste nicht, wo dieser Thread hingehört..
    Hier passt er nicht rein, aber ich hab eigentlich auch kein anderes Topic gefunden, zu dem es passt, also stehts jetzt einfach mal da!^^

    Ich probier schon längere Zeit krampfhaft, mit der Rewrite Engine zu arbeite, aber bekomm es einfach net hin, und die Seite, die ich zu diesem Thema gefunden habe, hab ich peinlicherweise net ganz verstanden... -lol-

    Also, vllt. könnte mir jemand von euch dabei helfen:

    Wenn ich jetzt z.B. diese URL habe:

    Code (Text):
    1. www.test.de/index.php?site=scripte&script=guestbook


    und diese möchte ich in folgende Umwandeln:

    Code (Text):
    1. www.test.de/scripte/guestbook


    Wie müsste dazu dann die .htaccess Datei aussehen?

    Vllt. kann mir das schnell wer posten, und es wäre sehr nett, wenn derjenige es auch ein bisschen erklären könnte...

    Wenn nötig, geb ich auch gerne Credits her, ich brauch die Dinge zurzeit sowieso net!^^

    gruß
    erti
    Code (Text):
    1.  
     
    #1      
  2. poky

    poky Guest

    Hilfe bei Rewrite Engine
    Code (Text):
    1. RewriteEngine on
    2. RewriteBase /
    3.  
    4. RewriteRule ^scripte/guestbook/$ /index.php?site=$1&script=$2 [L]
    so z.B.

    http://www.modrewrite.de/
     
    #2      
  3. erti

    erti Blabubb

    Dabei seit:
    24.07.2006
    Beiträge:
    221
    Geschlecht:
    männlich
    Hilfe bei Rewrite Engine
    Danke erstmals!

    Aber das is noch nicht ganz, was ich suche!

    Wie kann man das ganze dann dynamisch machen, sodass immer der erste Parameter im Querystring als erstes ersetzt wird, der zweite dann mit einem / wieder angehängt wird, und das für jeden Parameter der angegeben ist, egal wieviele das sind?

    gruß
    erti
     
    #3      
  4. Duddle

    Duddle Posting-Frequenz: 14µHz

    Dabei seit:
    03.02.2006
    Beiträge:
    3.864
    Geschlecht:
    männlich
    Ort:
    Dresden
    Hilfe bei Rewrite Engine
    Kombinier das mit dem und schon hast du es.


    Duddle
     
    #4      
  5. erti

    erti Blabubb

    Dabei seit:
    24.07.2006
    Beiträge:
    221
    Geschlecht:
    männlich
    Hilfe bei Rewrite Engine
    Also, ich habs jetzt ganz einfach so gelöst:

    htaccess:
    Code (Text):
    1.  
    2. RewriteEngine On
    3. RewriteRule ^(.*)/$ index.php?$1
    Und in der index php hol ich mir einfach die einzelnen Parameter so raus:

    [php:1:e0b489e2ce]
    $params = explode('/', $_SERVER['QUERY_STRING']);
    [/php:1:e0b489e2ce]

    Ds Problem dabei is jetzt, dass ich die index.php überhaupt nicht mehr erreichen kann, wenn ich die htaccess in den Ordner speicher!
    Da kommt immer ein 500-Error...

    Das ganze hab ich jetzt nur mal lokal bei mir getestet, und lokal hab ich nix an den Server Einstellungen verändert, das heißt, dass die Grundeinstellungen von XAMPP eingestellt sind!

    Kanns sein, dass da amServer was net passt, denn normalerweise müsste es ja so funktionieren, oder?

    gruß
    erti
     
    #5      
  6. serotonin

    serotonin Noch nicht viel geschrieben

    Dabei seit:
    10.10.2006
    Beiträge:
    31
    Ort:
    Erfurt
    Hilfe bei Rewrite Engine
    Beim XAMPP ist das Modul mod_rewrite noch nicht aktiviert.

    Schau mal in der httpd.conf nach und nimm vor dem Eintrag
    LoadModule rewrite_module modules/mod_rewrite.so das Raute-Zeichen (#) weg. Dann den Apache neu starten und es sollte klappen.

    Deine Lösung mit dem splitten innerhalb von PHP ist aber nicht die beste Lösung ...

    Versuchs mal so innerhalb der .htaccess:

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l

    RewriteRule ^/([A-Za-z0-9]+)/([A-Za-z0-9]+)$ /index.php?site=$1&script=$2 [L]

    Damit sollte es funktionieren.
     
    #6      
  7. erti

    erti Blabubb

    Dabei seit:
    24.07.2006
    Beiträge:
    221
    Geschlecht:
    männlich
    Hilfe bei Rewrite Engine
    Jo, danke, das hab ich jetzt gemacht...

    Ich weiß schon, dass es andera auch funktionieren könnte, aber ich glabu es gibt keine andere Möglichkeit, um beliebig viele Parameter verwenden zu können...

    gruß
    erti

    Edit: So funktionierts, aber wenn ich jetzt einen Parameter mit / anhänge, glaubt er ich will in einen anderen Ordner...
    Das is aber net der Fall, sondern er sollte das ganze ja in den QUERY_STRING schreiben...
    (Ich meine jetzt bei meiner Lösung)
     
    #7      
  8. serotonin

    serotonin Noch nicht viel geschrieben

    Dabei seit:
    10.10.2006
    Beiträge:
    31
    Ort:
    Erfurt
    Hilfe bei Rewrite Engine
    Naja ... du musst dich da schon ein bissel festlegen, daß nur eine bestimmte Syntax genutzt wird.
     
    #8      
  9. erti

    erti Blabubb

    Dabei seit:
    24.07.2006
    Beiträge:
    221
    Geschlecht:
    männlich
    Hilfe bei Rewrite Engine
    Ja aber es müsste ja theoretisch so funktionieren, oder etwa nicht?
    Und ich sehe eigentlich keinen scwerwiegenden Nachteil bei dieser Lösung des Poblems, oder übersehe ich da etwa etwas?

    Der einzige Unterschied dabei ist ja, dass ich anstatt des gobalen arrays $_GET das array $params verwende, in welches ich die Parameter schreibe...

    gruß
    erti
     
    #9      
  10. serotonin

    serotonin Noch nicht viel geschrieben

    Dabei seit:
    10.10.2006
    Beiträge:
    31
    Ort:
    Erfurt
    Hilfe bei Rewrite Engine
    Das klappt natürlich so, wie du es willst. Ich befürchte nur, daß die Scriptlaufzeiten erheblich höher werden, wenn du den QueryString immer erst zerpflücken musst.
     
    #10      
  11. erti

    erti Blabubb

    Dabei seit:
    24.07.2006
    Beiträge:
    221
    Geschlecht:
    männlich
    Hilfe bei Rewrite Engine
    Naja, ich denka nicht, dass das ein so großer Performanceverlust ist...
    Und wenn doch, kann ich es ja immer noch ändern!^^

    ABer es funktioniert ja tortzdem nicht! Mein Browser glaubt immer, das ich in einen anderen Ordner will, wenn ich einen Parameter anhänge..
    Was kann man da machen, bzw. was hab ich falsch gemacht? -gg-
     
    #11      
  12. serotonin

    serotonin Noch nicht viel geschrieben

    Dabei seit:
    10.10.2006
    Beiträge:
    31
    Ort:
    Erfurt
    Hilfe bei Rewrite Engine
    Also - du gibt folgendes ein:
    Code (Text):
    1.  
    2. http://localhost/site/module/page
    3.  
    In der .htaccess steht drin
    Code (Text):
    1.  
    2. RewriteEngine On
    3. RewriteRule ^(.*)$ index.php?$1
    4.  
    Und in dem Script:
    Code (Text):
    1.  
    2. <?php
    3. $params = explode('/', $_SERVER['QUERY_STRING']);
    4. foreach($params as $value) echo "$value
    5. ";
    6. ?>
    7.  
    Dann muss das gehen.

    Du hattest in der RewriteRule noch einen kleinen Fehler: das abschließende / habe ich entfernt.
     
    #12      
  13. erti

    erti Blabubb

    Dabei seit:
    24.07.2006
    Beiträge:
    221
    Geschlecht:
    männlich
    Hilfe bei Rewrite Engine
    Sooo, jetzt hab ich wieder ein kleines Proble...

    Kann es sein, das mod_sogar inkludierte Dateien behandelt?

    Also mir ist gerade aufgefallen, dass wenn ich die htaccess Datei drin hab, dann bindet er das Stylesheet nicht mehr ein...
    Wenn ich die htaccess lösche, wird wieder alle normal angezeigt....

    Das komische dabei ist, dass es vor ca. einer halben Stunde noch ganz noraml funktioniert hat...
    Jetzt nicht mehr!

    gruß
    erti
     
    #13      
  14. serotonin

    serotonin Noch nicht viel geschrieben

    Dabei seit:
    10.10.2006
    Beiträge:
    31
    Ort:
    Erfurt
    Hilfe bei Rewrite Engine
    Nicht ganz.
    Das Problem bei den externen CSS-Dateien sowie Bildern und JavaScript-Dateien ist es, daß der Browser deine URL als Ganzes interpretiert und damit natürlich die Dateien in den Verzeichnissen sucht.
    Deshalb solltest du Pfade immer absolut ausgehend vom root ( "/" ) angeben.

    Beispiel:

    Du hast
    Code (Text):
    1. [img]images/bild1.gif[/img]
    wobei das Verzeichnis "images" im WebRoot liegt.

    Daraus solltest du machen
    Code (Text):
    1. [img]/images/bild1.gif[/img]
    Damit sollte alles klappen :)
     
    #14      
  15. erti

    erti Blabubb

    Dabei seit:
    24.07.2006
    Beiträge:
    221
    Geschlecht:
    männlich
    Hilfe bei Rewrite Engine
    Ne funktioniert auch nicht!
    Habs sogar versucht von http://localhost/ ausgehend zu verlinken, aber auch das hat nix gebracht!
    Sobald die rewrite_engine auf on is, wird das Stylsheet nicht eingebunden..
     
    #15      
  16. serotonin

    serotonin Noch nicht viel geschrieben

    Dabei seit:
    10.10.2006
    Beiträge:
    31
    Ort:
    Erfurt
    Hilfe bei Rewrite Engine
    Schick mir mal den HTML-Text in ner PN
     
    #16      
  17. erti

    erti Blabubb

    Dabei seit:
    24.07.2006
    Beiträge:
    221
    Geschlecht:
    männlich
    Hilfe bei Rewrite Engine
    Welchen HTML Text?

    Der zum einbinden des Stylesheets?
    Den kann ich so auch posten!^^

    Code (Text):
    1. <link rel="stylesheet" type="text/css" href="css/style.css" />
    So habs ich üblicherweise immer gemacht...
    Wenn ich noch nen Slash vor "css" mache, funtzts net einmal, wenn die rewrite_engine aus is...
     
    #17      
  18. serotonin

    serotonin Noch nicht viel geschrieben

    Dabei seit:
    10.10.2006
    Beiträge:
    31
    Ort:
    Erfurt
    Hilfe bei Rewrite Engine
    Und in welchem Verzeichnis liegt die einbindende Datei?

    Also: das / bezeichnet, daß die Suche vom WebRoot ausgeht. Das heißt, daß im Fall "/css/style.css" das Verzeichnis css direkt im WebRoot liegen muss.
    Öhm ... ich glaube, ich hab da noch einen kleinen Fehler entdeckt ;-)

    Das mod_rewrite greift ja auf sämtliche URLs ... das heißt, du müsstest alles, was auf css und jpg oder gif oder png endet aus der Expression ausklammern.
     
    #18      
  19. erti

    erti Blabubb

    Dabei seit:
    24.07.2006
    Beiträge:
    221
    Geschlecht:
    männlich
    Hilfe bei Rewrite Engine
    Das Verzeichnis css liegt im gleichen Ordner, wie die index.php, aber der Webroot is ja eigentlich htdocs, oder?

    Und wie kann ich diese Endungen aus der Expression ausschließen? Sry, ich kenn mich bei der Geschichte net so gut aus!^^
     
    #19      
  20. serotonin

    serotonin Noch nicht viel geschrieben

    Dabei seit:
    10.10.2006
    Beiträge:
    31
    Ort:
    Erfurt
    Hilfe bei Rewrite Engine
    Wenns Zeit bis morgen hat, suche ich dir was raus. Ansonsten sagt dir sicher Google was dazu, wenn du nach "regular expressions php" suchst.
     
    #20      
x
×
×