Mod Rewrite .html zu Ordner

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hallo allerseits, ich habe schion ganzen Net durchgesucht und nichts zu meinem Problem gefunden:
    Es geht um folgenden. Ich habe einen Link wie folgt:

    http://www.beispiel-test.com/portfolio/portfolio.html

    und möchte mit rewrite in

    http://www.beispiel-test.com/portfolio/

    umwandeln

    Es kommt auch vor:
    http://www.beispiel-test.com/test1/test2/test.html
    muss in:
    http://www.beispiel-test.com/test1/test2/


    bitte hilft mir!!!
  • Das hab ich mir schon gedacht, nur verkaufen wir hier keine Fertiglösungen. Ich dachte du hättest bereits Versuche gemacht und ich könnte dir daran zeigen, wo der Fehler ist.

    Also so wie du dein Problem formulierst, willst du test1/test2/ im Browser eintippen und die Inhalte von test1/test2/test.html erhalten.
    Da du auf diese Art von wenig Information (Ordner,Ordner) auf auf viel Information (Ordner,Ordner,Dateiname) test1/test2/test.html weiterleiten willst, bleibt dir nichts anderes als die Regeln für jeden Ordner manuell zu erstellen.

    Wenn wir das ganze umdrehen würden, du also von Ordner,Ordner,Dateiname auf Ordner,Ordner leiten möchtest, dann musst du einfach nur....

    (Alle Zeichen)/(Alle außer Slash).html an \1 weiterleiten

    De Facto wird der Dateiname also ignoriert
  • Also, versucht habe ich schon, klar, aber es kommt mir trotzdem alles spanisch vor.
    Ich kapiere den Sytax einfach nicht.

    Für mein Problem, habe ich folgenden Skript versucht:

    Quellcode

    1. DirectoryIndex index.php index.shtml index.html index.htm
    2. Options +Includes -MultiViews
    3. AddType text/x-server-parsed-html .html .shtm .shtml .abc
    4. RewriteEngine On
    5. #Macht nichts anderes als www weg!!
    6. RewriteCond %{HTTP_HOST} ^www.muster-seite.com$ [NC]
    7. RewriteRule ^(.*) http://muster-seite.com/$1 [L,R=301]
    8. #startseite index.php auf -> /
    9. RewriteCond %{THE_REQUEST} ^[A-Z]{3,4}\ /[^.]*index\.php\ HTTP [NC]
    10. RewriteRule ^([^.]*)index\.php$ http://muster-seitecom/$1 [NC,R=301,L]
    11. # /verz/beispiel.php --> /vrz/beispiel/
    12. RewriteCond %{THE_REQUEST} ^[A-Z]{3,4}\ /[^.]+/[^./]+\.php\ HTTP [NC]
    13. RewriteRule ^([^.]+)/([^./]+)\.php$ /$1/$2/ [R=301,L]
    14. # /verz/beispiel/ --> /vrz/beispiel.php
    15. RewriteRule ^([^.]+)/([^/.]+)/$ /$1/$2.php[L]
    16. RewriteCond %{REQUEST_URI} !/$
    17. RewriteRule !\.[a-z]{2,4}$ - [C]
    18. RewriteRule ^(.+) /$1/ [R=301,L]
    Alles anzeigen



    Dies funktionier bei:

    www.test.de/test/test.html -> www.test.de/test/test

    aber, funktioniert nicht bei:
    www.test.de/test/test2/test2.html -> www.test.de/test/test2/test2
    usw.


    Aber, meine Kernidee!!

    ich habe z.B.: folgende Struktur:
    ---------------
    1.bilder
    2.info/kontakt.html
    3.css

    index.php
    --------------

    In meiner kontakt.html befinden sich Bilder und die Links sehen wir folgt:

    ../bilder/hilfe.jpg

    und jetzt!! Ich möchte, ich weiss nicht, ob dies überhaupt möglich ist, dass alle Links vom root aus kommen :) also, das heißt:

    wenn ich in der kontakt.html wie folgt angebe:

    /bilder/hilfe.jpg

    soll dies auch funktioniert.
    Ich weiss, ist nicht leicht zu verstehen, aber wäre so dankbar für die Hilfe!!

    Zu dem Problem, kommt dann auch das Problem von oben, Sinn ist, dass meine Links auch wie folgt funktionieren:

    z.B.: index.html
    <a href ="info/kontakt.html/">Kontakt</a> soll zu -> <a href ="info/kontakt/">Kontakt</a>
  • Quellcode

    1. RewriteRule ^(.*)/([^/]*).html$ $1 [L]

    Das ist der Code für folgendes:
    * /test1/test2/test.html -> /test1/test2/
    * /test1/test2/test3/test.html -> /test1/test2/test3/

    In deinem aktuell Posting siehts aber eher so aus als willst du:

    Quellcode

    1. RewriteRule ^(.*)/([^/]*).html$ $1/$2 [L]

    * /test1/test2/test.html -> /test1/test2/test
    * /test1/test2/test3/test.html -> /test1/test2/test3/test

    Da deine Bilder doch sowieso im Hauptverzeichnis liegen kommst du mit folgender Pfadangabe auf jeden Fall ans Ziel: /bilder/hilfe.jpg
  • alles was rund geklammert wird ist ein regulärer ausdruck der zu einer variablen wird
    alles was eckig geklammert wird ist ein regulärer ausdruck

    $1, $2, $3, ... sind die Variablen

    [^/] <- beliebiges zeichen außer slash
    [^/]* <- ... unendlich oft wiederholt

    Wer in der Schule mit Automatentheorie konfroniert wurde, weiß wie man reguläre Ausdrücke baut.
  • also, von Prinzip, es funktioniert, aber ich bekomme die Fehlermeldung bei
    * /test1/test2/test.html -> /test1/test2/

    You don't have permission to access /test2/ on this server.

    Zugriff auf Ordner ist gesperrt, klar, aber, ist doch von Prinzip:

    wird /test.html einfach ausgeblenden und in wirklichkeit, die /test.html ist doch da!!! oder?)
  • nein

    aufgebaut ist wie folgt:

    www.muster.de/portfolio/portfolio.html

    www.muster.de/gallery/gallery.html
    usw.

    wollte wie gesaagt, dass mit Ausblenden von:/portfolio.html und /gallery.html usw.

    und dann meine Links in der Navigation wie folgt darzustellen:

    <a href="gallery.html"> -><a href="gallery/">
    <a href="portfolio.html"> -><a href="portfolio/">

    dies versuche ich seit ...
    Suche Lösung und Hilfe...und so viel ich weiss, geht dies über htaccess:

    als beispiel, schau den Quellcode (Links) von:
    artlebedev.com/

    ich glaube inzwischen, du bist der einzige der mir helfen kann :)
  • Mach doch folgendes:

    .htaccess

    Quellcode

    1. <IfModule mod_rewrite.c>
    2. RewriteEngine On
    3. RewriteBase /
    4. RewriteCond %{REQUEST_FILENAME} !-f
    5. RewriteCond %{REQUEST_FILENAME} !-d
    6. RewriteRule . /index.php [L]
    7. </IfModule>

    So kannst du deine Links machen, wie du möchtest, alles, was es nicht wirklich gibt wird auf die index.php gezeigt. Ab da an kannst du das ganze übers Script steuern.

    MfG
    eLKane