1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

2 Fragen zu mod rewrite (Apache)

Dieses Thema im Forum "PHP & Co." wurde erstellt von zoom, 03.03.09.

  1. zoom

    zoom Antonowka

    Dabei seit:
    06.03.06
    Beiträge:
    356
    Moin!

    1. Ich habe eine .htaccess mit folgenden Rewrite-Regeln erstellt:
      Code:
      RewriteEngine on
      RewriteRule ^(.*)/(.*)/(.*)/$ index.php?eins=$1&zwei=$2&drei=$3 [L]
      RewriteRule ^(.*)/(.*)/$ index.php?eins=$1&zwei=$2 [L]
      RewriteRule ^(.*)/$ index.php?eins=$1
      Ich füge die Inhalte dann mit php per include in meiner index-Datei ein. Die Inhalte ergeben sich aus den Parametern eins, zwei, drei. Die eingefügten Dateien liegen im Ordner inhalt. Wenn ich die Datei hallo.php aus dem Ordner Inhalt in meiner index-Datei einfügen möchte, dann kann ich das per index.php?eins=hallo tun. Dabei lassen sich relative Pfade für zum Beispiel externe CSS-Dateien und Bilder verwenden. Sobald ich hallo.php aber per hallo/ aufrufe, muss ich absolute Pfade zu CSS-Dateien und Bilder einfügen. Woran liegt das?
    2. Ich möchte domain.de/hallo aufrufen können. Das ist momentan nicht möglich. Es funktioniert nur die URL domain.de/hallo/. Wie kann ich das Problem lösen. Vermutlich muss ich die .htaccess anpassen?
    Kann mir jemand bei den Fragen helfen?

    Gruß zoom
     
  2. apfelq

    apfelq Braeburn

    Dabei seit:
    10.10.08
    Beiträge:
    42
    zu eins. ja das ist ganz normal da für (da bin ich mir nicht sicher aber ich glaube der DOM ist schuld) domain.de/hallo/ das ist ja eigentlich ein ordern und solang du domain.de/hallo/style.css nicht in diesem ordner hast (was eigentlich nicht geht, da dieser ordern nur vorgekaukelt wird) wird er keine css datei finden. da gibts aber ein trick

    <link rel="stylesheet" type="text/css" href="/style.css" media="screen" />

    der slash nach vor dem style.css ist wichtig, aber pass auf es muss der komplette pfad sein der nach .de kommt.

    zu zwei. wenn du den code hier benutzst wird es ganz sicher funktionieren

    Code:
    RewriteEngine on
    
    RewriteRule ^([^/.]+)/?$ index.php?eins=$1 [NC]
    RewriteRule ^([^/.]+)/([^/.]+)/?$ index.php?eins=$1&zwei=$2 [NC]
    RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/?$ index.php?eins=$1&zwei=$2&drei=$3 [NC]
    
    NC hebt die casesensitivity auf. ich glaube dein code funktioniert nicht weil du kein fragezeichen vor dem ersten dollarzeichen hast.
     
    zoom gefällt das.
  3. zoom

    zoom Antonowka

    Dabei seit:
    06.03.06
    Beiträge:
    356
    Vielen Dank apfelq.

    Zur ersten Frage: der relative Pfad nach dem .de reicht leider nicht aus. Ich habe den kompletten Pfad angegeben. Ansonsten kommt es zu Komplikationen.

    Zur zweiten Frage: Ich habe deinen Code übernommen. Der funktioniert in der Tat wunderbar. nun kann ich domain.de/home sowie domain.de/home/ aufrufen. Was muss ich definieren, wenn domain.de/home in der Adresszeile zu domain.de/home/ führen soll? Im Moment bleibt die URL einfach ohne / stehen.

    gruß zoom

    Edit: Was ist der Unterschied zwischen ([^/.]+) und (.*)?
     
  4. bond

    bond Erdapfel

    Dabei seit:
    02.03.09
    Beiträge:
    5
    Code:
    ([^/.]+)
    Ein beliebiges Zeichen, aber kein Slash, muss mindestens 1 Mal vorkommen.

    Code:
    (.*)
    Alle Zeichen, beliebig viele davon (insb. auch keine).
     

Diese Seite empfehlen