johjoh: Pfade / mod-rewrite

Hallo zusammen,

das Thema Pfade nervt mich seit Jahren gehörig und ich stehe mal wieder wie der Ochs vorm Berg. Vielleicht bin ich auch einfach zu doof dafür. Ich finde einfach keine gescheiten Antworten auf meine Fragen. Vielleicht kennt jemand eine gute Anleitung, die sich nicht ohne weiteres herbei googeln läst?

Mein Problem:

RewriteRule ^(.*)/(.*).html$ index.php?par1=$1&par=$2 [L]
...macht was es soll, aber eben auch css, js und bilddateien nicht mehr auf dem bisherigen weg erreichbar.

RewriteCond %{REQUEST_URI} !^(/css|/img|/js) [NC]
...eingefügt - fein, jetzt wieder erreichbar
auch der link zu meinem css-framework "@import url(../yaml/core/base.css);" funktioniert, ohne dass ich /yaml noch in meine Condition aufnehme... eigentlich logisch, weil die url die der browser anfragt, ja wieder mit css/ anfängt.

aber natürlich muss ich die urls anpassen mit denen bilder, css und js eingebunden werden. kanonisch oder server-absolut heißt es. finde ich blöd, weil ich auf server-spezifische parameter versuche zu verzichten. da schau ich mich mal um und finde auf der seite meines frameworks www.yaml.de, dass die mit relativen urls arbeitet. klickt man auf "übersicht", landet man aber unter der url:
http://www.yaml.de/de/overview.html
...mit dem simulierten verzeichnis /de
und da findet sich zb ein bild mit relativer url
fileadmin/img/symbols/symb_doc48.png
...so stehts im src-attribut
der pfad zum bild wird vom browser aber zu
http://www.yaml.de/fileadmin/img/symbols/symb_doc48.png
statt zu
http://www.yaml.de/de(!!!)/fileadmin/img/symbols/symb_doc48.png
aufgelöst.

frag ich mich - wie machen die das?

freue mich über hilfestellungen.

gruß, johannes

  1. frag ich mich - wie machen die das?

    Indem sie sämtlichen Traffic auf index.php umschreiben und mit einem Script auswerten - die TYPO3-Extension die das erledigt nennt sich RealURL.

    1. »» frag ich mich - wie machen die das?

      Indem sie sämtlichen Traffic auf index.php umschreiben und mit einem Script auswerten - die TYPO3-Extension die das erledigt nennt sich RealURL.

      danke für die schnelle antwort, aber sie beantwortet noch nicht meine frage: wenn ich die adresse eingebe, die der browser daraus machen sollte, also:
      www.yaml.de/de/fileadmin/img/symbols/symb_doc48.png
      bekomme ich eine fehlerseite.
      www.yaml.de/fileadmin/img/symbols/symb_doc48.png
      funktioniert und zeigt das bild.
      aber wieso löst der browser die url an dieser stelle nicht relativ zu dem pfad auf, in dem sich die url befindet (bzw. zu befinden scheint)?

      1. Hi johjoh!

        danke für die schnelle antwort [...]

        War aber falsch. [1]

        aber wieso löst der browser die url an dieser stelle nicht relativ zu dem pfad auf, in dem sich die url befindet (bzw. zu befinden scheint)?

        Die Antwort hast du ja jetzt richtig von mir bekommen.

        [1] Poehser suit! =)

        MfG H☼psel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
  2. Hi johjoh!

    RewriteRule ^(.*)/(.*).html$ index.php?par1=$1&par=$2 [L]
    ...macht was es soll, aber eben auch css, js und bilddateien nicht mehr auf dem bisherigen weg erreichbar.

    RewriteCond %{REQUEST_URI} !^(/css|/img|/js) [NC]
    ...eingefügt - fein, jetzt wieder erreichbar

    Ich würde das folgendermaßen tun:

      
    RewriteCond %{REQUEST_FILENAME} !-f  
    RewriteCond %{REQUEST_FILENAME} !-d  
    RewriteCond %{REQUEST_FILENAME} !-l  
    RewriteRule ^(.*)/(.*).html$ index.php?par1=$1&par=$2 [L]
    

    frag ich mich - wie machen die das?

    Mit dem http://de.selfhtml.org/html/kopfdaten/basis.htm@title=base-Tag.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-l

      das sieht gut aus. so mach ichs.

      »» frag ich mich - wie machen die das?
      Mit dem http://de.selfhtml.org/html/kopfdaten/basis.htm@title=base-Tag.

      ok. dann muss man also auch hier die kanonische url angeben.
      hm, die einzige möglichkeit, die ich jetzt noch sehe auf einen server-spezfischen parameter zu verzichten wäre dann, server-absolute urls und den pfad vom doc-root des servers zum projekt-root per php zu ermitteln.

      danke dir!

      johannes

    2. Ich würde das folgendermaßen tun:

      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-l
      RewriteRule ^(.)/(.).html$ index.php?par1=$1&par=$2 [L]

        
      Nachdem die YAML-Seite auf TYPO3 basiert, wird mit ziemlich hoher wahrscheinlichkeit RealURL verwandt. Es wird wahrscheinlich keine Schlaue rewrite-Regel zu finden sein, sondern eben eine PHP-Script, welches dies erledigt :)  
        
      Darum tippe ich drauf, dass in der Apache-Config folgendes zu finden ist:  
      ~~~apache
        
      		RewriteRule ^(typo3|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)/ - [L]  
      		RewriteRule ^typo3$ typo3/index.php [L]  
      		RewriteCond %{REQUEST_FILENAME} !-f  
      		RewriteCond %{REQUEST_FILENAME} !-d  
      		RewriteCond %{REQUEST_FILENAME} !-l  
      		RewriteRule .* index.php [L]
      

      oder dieses hier:

      		RewriteRule ^typo3$ - [L]  
      		RewriteRule ^typo3/.*$ - [L]  
      		RewriteRule ^fileadmin/.*$ - [L]  
      		RewriteCond %{REQUEST_FILENAME} !-f  
      		RewriteCond %{REQUEST_FILENAME} !-d  
      		RewriteCond %{REQUEST_FILENAME} !-l  
      		RewriteRule .* index.php
      

      In diesem Sinne: poehser Hopsel! =D

      1. Hi suit!

        Es wird wahrscheinlich keine Schlaue rewrite-Regel zu finden sein, sondern eben eine PHP-Script, welches dies erledigt :)

        Richtig, richtig...
        Aber wieso reitest du so sehr auf Typo3 herum?
        Dass der Pfad zum Backend eines beliebigen CMS über

        RewriteRule ^BACKEND_PFAD$      -         [L]  
        RewriteRule ^BACKEND_PFAD/.*$   -         [L]
        

        verfügbar sein sollte, steht hier ja gar nicht zur Diskussion.

        Aber deine Aussage, dass normale Bild-/Skript-/Style-Ressourcen auch über eine zusammenfassende Anlaufstelle ausgegeben bzw. durchgeschleift würden, ist zumindest für yaml.de falsch. Das hast du mit den eben noch einmal geposteten RewriteConds ja auch gewissermaßen selbst zugegeben.

        In diesem Sinne: poehser Hopsel! =D

        Ich mach jetzt Urlaub. Ob ich poehse™ bin, muss dann meine Freundin heute abend entscheiden. :p

        MfG H☼psel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
        1. Aber wieso reitest du so sehr auf Typo3 herum?

          Weil gefragt wurde wie "die" es machen - nicht wie man es allgemein macht, und "die" verwenden TYPO3 mit einer Extension die alles ohne irgendwelche Konfiguration von ganz allein macht - ich bezweifle also, dass die yaml-Leute irgendwas diesbezüglich selbst gemacht haben (ausser ggf. die Anpassung des Layouts der virtuellen Pfade.

          Aber deine Aussage, dass normale Bild-/Skript-/Style-Ressourcen auch über eine zusammenfassende Anlaufstelle ausgegeben bzw. durchgeschleift würden, ist zumindest für yaml.de falsch.

          Richtig, das war eine Unterlassung meinerseits. Ich hätte schreiben sollen, dass sie sämtlichen Traffic umschreiben, keine Datei, kein Verzeichnis usw ist :)

          Das hast du mit den eben noch einmal geposteten RewriteConds ja auch gewissermaßen selbst zugegeben.

          Erwischt :) du schlimmer Finger.

          1. Hi suit!

            Poehser suit!
            poehser Hopsel!
            [...] du schlimmer Finger.

            Ich habe das Gefühl, wir würden uns bei einem (Kasten) Bier sehr gut verstehen, oller Kotzbrocken. =)

            MfG H☼psel

            --
            "It's amazing I won. I was running against peace, prosperity, and incumbency."
            George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
            Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
            1. Ich habe das Gefühl, wir würden uns bei einem (Kasten) Bier sehr gut verstehen, oller Kotzbrocken. =)

              Es muss ein Stiegl sein!