+ Antworten
Ergebnis 1 bis 8 von 8

Thema: dynamische Seiten, statische URL, mod-rewrite

  1. #1
    TP-Insider Wolfgang G hilft, wo's geht Wolfgang G hilft, wo's geht Wolfgang G hilft, wo's geht Avatar von Wolfgang G
    Registriert seit
    Aug 2003
    Ort
    Bonn-Beuel
    Beiträge
    708

    dynamische Seiten, statische URL, mod-rewrite

    Hallo zusammen,

    ich habe eine PHP-basierte Website erstellt und möchte nun die URLs via mod-rewrite verändern.
    Das klappt auf einer Ebene auch ganz gut, will ich jedoch 2 Parameter übergeben, flippt der Server aus. Ansehen kann man sich das Desaster hier.

    Solange man oben im Menü bleibt läuft alles ok - in der Statuszeile werden HTML-URLs angezeigt und die Seiten werden geladen. Geht man jedoch auf Leistungen und klickt hier im linken Menü, wird zwar die richtige Seite geladen, aber es gehen alle Pfadangaben zu Bildern, Stylesheets usw. über die Wupper und man erhält eine reine Textversion. Versucht man von hier zurückzugehen, geht gar nichts mehr, da sich die Links weiter verändern. Aus „start.html“ wird „leistungen/start.html“, aus „leistungen/1.html wird leistungen/leistungen/1.html usw.

    Meine .htaccess sieht so aus:
    Code:
    RewriteEngine On
    Options FollowSymLinks
    RewriteCond %{REQUEST_FILENAME} !^index\.php$
    RewriteBase /arnimTest
    RewriteRule ^([^/]*)\.html$ /arnimTest/index.php?Seite=$1
    RewriteRule ^([^/]*)/([0-9]*)\.html$ /arnimTest/index.php?Seite=$1&Sub=$2 [L]
    Die Links in der Mitte sind noch im alten Format (index.php?…) und funktionieren einwandfrei.

    Hat jemand eine Ahnung, was ich da falsch mache?

    Grüße
    Wolfgang


  2. #2
    TP-Veteran LimaX ist ein richtiges Arbeitstier - DANKE LimaX ist ein richtiges Arbeitstier - DANKE LimaX ist ein richtiges Arbeitstier - DANKE LimaX ist ein richtiges Arbeitstier - DANKE LimaX ist ein richtiges Arbeitstier - DANKE Avatar von LimaX
    Registriert seit
    Dec 2001
    Ort
    Heidelberg
    Beiträge
    1.568
    Keine Ahnung, was Du falsch machst, aber ich hatte das gleiche Problem.
    Gelöst hab ich's, indem ich den Pfad als Variable hinterlegt habe und alle Links mit dieser Variable absolut angegeben hab. Damit befindet sich der Browser immer im Standardverzeichnis (oder in dem, wo er auch sein soll, um den Link aufzurufen).

    Also ganz grob so:
    $pfad="http://www.blabla.de"

    <a href="<?php include($pfad) ?>/leistungen.htm">Leistungen</a>

    Bitte nicht wegen der fehlerhaften Befehle schlagen, php geh&#246;rt nicht zu meinen t&#228;glichen Anwendungen, ich wollte lediglich das Prinzip aufzeigen.

  3. #3
    TP-Insider Wolfgang G hilft, wo's geht Wolfgang G hilft, wo's geht Wolfgang G hilft, wo's geht Avatar von Wolfgang G
    Registriert seit
    Aug 2003
    Ort
    Bonn-Beuel
    Beiträge
    708
    LimaX: Danke erstmal für den Tip.

    Ich habe das ganze jetzt umgeschrieben, so dass ich nicht mehr mit virtuellen Ordnern arbeite.

    Meine .htacces sieht jetzt so aus:

    Code:
    RewriteEngine On
    Options FollowSymLinks
    RewriteCond %{REQUEST_FILENAME} !^index\.php$
    RewriteBase /arnimTest
    RewriteRule ^([a-z]+)_([\d]+)\.html$ /arnimTest/index.php?Seite=$1&Sub=$2 [L]
    RewriteRule ^([a-z]+)\.html$ /arnimTest/index.php?Seite=$1 [L]
    Also erstmal prüfen, ob die URL beliebige Kleinbuchstaben + _ + beliebige Ziffern enthält. Wenn nicht, nächste Regel. Trotzdem passt die erste Regel auf dem Live-Server auf eine Übergabe wie „leistungen_1.html“ nicht. Lokal funktionert es dagegen prima.

    Sehe gerade, dass auf dem Live-Server eine andere Apache-Version läuft, als bei mir lokal. Live= 1.3.27, Lokal 2.x. Braucht Apache 1.3.x andere RegEx als 2.x? Dachte eigentlich, das sei standardisiert …

    Bin mit meinem Latein so langsam am Ende …


  4. #4
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    funktioniert live denn &#252;berhaupt ein rewrite ? Wenn nicht, liegt es an der Einstellung in der httpd.conf.

    Unterschiede von den Regeln gibt es nicht, nur von der Konfiguration in besagter httpd.conf.


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  5. #5
    TP-Insider Wolfgang G hilft, wo's geht Wolfgang G hilft, wo's geht Wolfgang G hilft, wo's geht Avatar von Wolfgang G
    Registriert seit
    Aug 2003
    Ort
    Bonn-Beuel
    Beiträge
    708
    Jo, teilweise funktioniert es. Im ersten Beitrag habe ich einen Link gesetzt. Im oberen Menü ist alles ok, im linken auf Seite „Leistungen“ geht nix. Da greift einfach die Regel nicht.


  6. #6
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    Deine Flags sind auch falsch - L steht f&#252;r Last Rule. Nimm hier mal NC o.&#228;.
    Hier nochmal die Bedeutung der Flags:

    [NC] (No Case)
    [OR] (OR next condition)
    [R] (force Redirect)
    [F] (force URL to be Forbidden)
    [G] (force URL to be Gone)
    [L] (last rule)
    [P] (force proxy)

    Quelle: http://www.widexl.com/scripts/docume...d_rewrite.html


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  7. #7
    TP-Insider Wolfgang G hilft, wo's geht Wolfgang G hilft, wo's geht Wolfgang G hilft, wo's geht Avatar von Wolfgang G
    Registriert seit
    Aug 2003
    Ort
    Bonn-Beuel
    Beiträge
    708
    Hallo Steffen,
    ich komme aus dem Bedanken gar nicht mehr raus.

    Irgendwo hatte ich gelesen, dass das [L] nur dann greift, wenn die vorstehende Regel angewandt wurde. Naja, das Thema mod-rewrite scheint doch recht kryptisch zu sein. Da liest man auf jeder Webseite was anderes.
    Das Problem ist wohl eher in der Steinzeit-Apache-Version des Providers begründet, denn wie gesagt, lokal unter Apache 2 funktioniert alles einwandfrei.
    Ich lasse jetzt erstmal alles so wie es ist. Vielleicht macht all-inkl.com ja irgendwann ein Update auf die neue Apache-Version.


  8. #8
    TP-Insider Wolfgang G hilft, wo's geht Wolfgang G hilft, wo's geht Wolfgang G hilft, wo's geht Avatar von Wolfgang G
    Registriert seit
    Aug 2003
    Ort
    Bonn-Beuel
    Beiträge
    708
    So, habs gelöst. Vielleicht hilft das ja mal einem anderen Anfänger weiter.

    Code:
    RewriteEngine On
    Options +FollowSymLinks
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteBase /arnimTest/
    RewriteRule ^([a-z]+[^_])\.html$ /arnimTest/index.php?Seite=$1
    RewriteRule ^([a-z]+)_Thema([0-9]+)\.html$ /arnimTest/index.php?Seite=$1&Sub=$2 [L]
    Entscheidend war wohl der Slash am Ende der RewriteBase-Anweisung. Jedenfalls funktioniert es jetzt problemlos auf Apache 1.3.x als auch auf 2.x.


+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51