+ Antworten
Ergebnis 1 bis 11 von 11

Thema: Mod rewrite. dynamische URLs in statische umwandeln.

  1. #1
    TP-Moderator satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User Avatar von satre
    Registriert seit
    Jan 2005
    Ort
    Düsseldorf
    Beiträge
    3.683

    Mod rewrite. dynamische URLs in statische umwandeln.

    Tach,
    obwohl ich schon wie verrückt gegoogled und hier im Forum nachgeschaut habe, komme ich nicht auf die Lösung.

    Ich will mittels mod rewrite meine dynamischen URLs in statische umwandeln:
    siw.php?sub=zeitung&kat=seite1 nach
    siw/zeitung/seite1.html

    Ich habe bisher folgendes versucht:
    Code:
    RewriteEngine on
    RewriteRule ^siw/([a-z]+)/([a-z]+)\.html$ /siw.php?sub=$1&kat=$2
    Aber es klappt einfach nicht.
    Ich bitte um Lösungsansätze und danke im vorraus.
    Geändert von satre (09.04.2006 um 16:14 Uhr)

  2. #2
    TP-Specialist phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    Hallo

    Schau mal hier - vielleicht hilft das etwas weiter.
    Hast Du mal statt dem + mit * versucht? Du kannst statt ([a-z]+) auch einfach (.*) benutzen. So weit ich weiß muß am Ende auch ein [L] dran. Bekommst eine Fehlermeldung, wenn es nicht klappt?

    Gruß Rizzo

    [edit]
    Hast Du auch deine Links auf der Seite geändert, damit das funktioniert? Wenn Du die RewritEngine anwirfst, erwartet die Links im statischen Format, also etwa siw/zeitung/seite1.html
    Geändert von phpBuddy (09.04.2006 um 16:58 Uhr)

  3. #3
    TP-Moderator satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User Avatar von satre
    Registriert seit
    Jan 2005
    Ort
    Düsseldorf
    Beiträge
    3.683
    Zitat Zitat von Rizzo
    Du kannst statt ([a-z]+) auch einfach (.*) benutzen.
    Hatte ich schon probiert.


    So weit ich weiß muß am Ende auch ein [L] dran. Bekommst eine Fehlermeldung, wenn es nicht klappt?
    Habe ich noch nicht drangehängt. Ich dachte das [L] ist nur dazu da um keine folgenden RewriteRules mehr zuzulassen. Oder muss es unbedingt ans Ende?
    Eine Fehlermeldung bekomme ich nicht.

    [edit]
    Hast Du auch deine Links auf der Seite geändert, damit das funktioniert? Wenn Du die RewritEngine anwirfst, erwartet die Links im statischen Format, also etwa siw/zeitung/seite1.html
    Wirklich? Also meine eigentlichen Links habe ich noch nicht geändert. Ich dachte das macht modrewrite automatisch.
    Geändert von satre (09.04.2006 um 17:06 Uhr)

  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
    nein - modrewrite übersetzt Dir eine Url
    siw/zeitung/seite1.html

    nach
    siw.php?sub=zeitung&kat=seite1

    Es ist ja nur eine Ersetzungsroutine.
    Die Links musst Du selber so generieren.


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


  5. #5
    TP-Moderator satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User Avatar von satre
    Registriert seit
    Jan 2005
    Ort
    Düsseldorf
    Beiträge
    3.683
    Dann hatte ich die ganze Sache wohl etwas falsch verstanden.
    Danke euch beiden. Ich werde mal weiter probieren.

  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
    Tipp: bau Dir eine Funktion, die Deine Links generiert und die Du bei jedem Link aufrufst.
    Dann hast Du es zentral und kannst es leicht ändern / anpassen


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


  7. #7
    TP-Moderator satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User Avatar von satre
    Registriert seit
    Jan 2005
    Ort
    Düsseldorf
    Beiträge
    3.683
    Zitat Zitat von St@eff.en
    Tipp: bau Dir eine Funktion, die Deine Links generiert und die Du bei jedem Link aufrufst.
    Dann hast Du es zentral und kannst es leicht ändern / anpassen
    Das klingt wirklich toll, aber wegen mangelnder Kenntnisse wüsste ich nicht wie. Es wäre nett, wenn du mir da einen kleinen Denkansatz geben könntest.

    Die Modrewrite-Geschichte funktionioniert im Ansatz schon mal gut.
    Leider habe ich meine Bildverweise immer relativ angelegt und muss diese erstmal abändern, damit sie absolut zum ROOT stehen. "/bilder"

    Ein weiteres Problem ist, dass ich manchmal eine und manchmal zwei Variablen übergeben muss.

    Bei dieser Variante spuckt mir der Server einen 500-Fehler aus:
    Code:
    RewriteRule ^siw/(.*)\.html$ /siw.php?sub=$1
    RewriteRule ^siw/(.*)/(.*)\.html$ /siw.php?sub=$1&kat=$2
    Bestimmt gibts eine einfachere Möglichkeit, die auch funktionieren würde.


    edit: Fehler entdeckt. Das Backslash war schuld.
    Geändert von satre (11.04.2006 um 13:18 Uhr)

  8. #8
    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
    Also ein Denkansatz

    PHP-Code:
    function getLink($url) {
        
    $link='http://'.$_SERVER["HTTP_HOST"].'/'.substr($url,0,strpos($url,'.')).'/';
        
    $params=explode('&',substr($url,strpos($url,'?')+1));
        foreach(
    $params as $p) {
            
    $details=explode("=",$p);
            if(
    $details[0]=='sub'$link.=$details[1].'/';
            if(
    $details[0]=='kat'$link.=$details[1].'.html';
        }
        return 
    $link;
    }

    echo 
    getLink('siw.php?sub=zeitung&kat=seite1'); 
    das ist jetzt auf Deine Struktur ausgerichtet und soll Dir nur zeigen, wie man es zentralisieren kann. In der Funktion kannst Du dann die Ausgabe für alle Links beeinflussen.


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


  9. #9
    TP-Moderator satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User Avatar von satre
    Registriert seit
    Jan 2005
    Ort
    Düsseldorf
    Beiträge
    3.683
    Der Ansatz klingt einleuchtend. Ich glaube, ich sollte mal damit anfangen, mich ernsthafter mit php auseinanderzusetzen.

    Im Moment gibts ein weiteres Problem.
    Während die .htaccess auf meiner Webseite problemlos funktioniert, wird sie in meiner lokalen Testumgebung (Apache 2) nicht erkannt.

    Im Moment sieht das Ding so aus:
    Code:
    ErrorDocument 404 http://www.satre-synchron.de/404.html
    RewriteEngine on
    RewriteBase /
    Options +FollowSymlinks
    RewriteCond %{HTTP_HOST} !^www.satre-synchron.de$
    RewriteRule ^(.*)$ http://www.satre-synchron.de/$1 [R=301]
    RewriteRule ^siw/(.*)/(.*)\.html$ /siw.php?sub=$1&kat=$2
    RewriteRule ^siw/(.*)\.html$ /siw.php?sub=$1
    RewriteRule ^synchro/(.*)/(.*)\.html$ /synchro.php?sub=$1&kat=$2
    RewriteRule ^synchro/(.*)\.html$ /synchro.php?sub=$1
    RewriteRule ^satre-studios/(.*)\.html$ /satre-studios.php?sub=$1
    Muss ich die .htaccess-Unterstützung auf meinem lokalen Webserver vielleicht noch aktivieren?

    edit: Problem gelöst.
    LoadModule rewrite_module modules/mod_rewrite.so war in der httpd.conf auskommentiert.
    Geändert von satre (11.04.2006 um 14:52 Uhr)

  10. #10
    TP-Moderator satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User satre lebt für das TP und seine User Avatar von satre
    Registriert seit
    Jan 2005
    Ort
    Düsseldorf
    Beiträge
    3.683
    Ich hake noch mal nach.

    Bei meiner Webseite werden je nach Bedarf eine, zwei oder drei Variablen übergeben, da nicht jede Seite Unterkategorien hat. Bisher habe ich für jede neue Variable eine neue RewriteRule definiert, was bestimmt überlüssig ist. (Aber anders hats nicht funktioniert)

    Deshalb die rhetorische Frage: Lässt sich dieses Konstrukt vereinfachen?

    Code:
    RewriteEngine on
    RewriteBase /
    Options +FollowSymlinks
    RewriteRule ^siw/(.*)/(.*)\.html$ /siw.php?sub=$1&kat=$2
    RewriteRule ^siw/(.*)\.html$ /siw.php?sub=$1
    RewriteRule ^synchro/(.*)/(.*)\.html$ /synchro.php?sub=$1&kat=$2
    RewriteRule ^synchro/(.*)\.html$ /synchro.php?sub=$1
    RewriteRule ^satre-studios/(.*)/(.*)_(.*)\.html$ /satre-studios.php?sub=$1&kat=$2&pag=$3
    RewriteRule ^satre-studios/(.*)/(.*)\.html$ /satre-studios.php?sub=$1&kat=$2
    RewriteRule ^satre-studios/(.*)\.html$ /satre-studios.php?sub=$1

  11. #11
    TP-Insider loki ist auf einem guten Weg Avatar von loki
    Registriert seit
    May 2003
    Ort
    Aachen
    Beiträge
    720
    Du kannst mit ? werte in () (Klammern) optionalisieren. Das heisst, sie tauchen nicht unbedingt auf.
    Diese müssen dann allerdings doch im Rewrite übergeben werden, was aber nicht der Akt ist, da du ja leere Übergaben machen kannst. Die Frage ist nur ob da dein Code gut drauf reagiert, aber das kann man im Zweifel leicht abändern.

    BSP:
    datei-([0-9]+)(-([0-9]+))?\.html datei.php?sub=$1&sub2=$3

    Zur erklärung der 3:
    Die Klammern werden von vorne an durchgezählt, für jede aufgehende deinen Zähler + 1

    Ich hoffe du kannst hiermit was anfangen
    "Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
    Einstein


+ 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