kostenloser Webspace werbefrei: lima-city


mod_rewrite & eigene Fehlerseite

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    secretagentman

    secretagentman hat kostenlosen Webspace.

    Guten Tag.

    Ich betreibe lokal einen Webserver und da ich für den Kunden nur das Beste möchte, versuche ich gerade mittels mod_rewrite für schöne URLs zu sorgen.
    In der index.php Datei wird über eine Switch-Abfrage "$_GET['site']" untersucht und dann die entsprechende Datei für den Inhalt inkludiert.

    D.h. z.B. "index.php?site=impressum"
    Mein Ziel war bzw. ist es, dass ich stattdessen schlicht "impressum" schreibe.

    Ich habe schon viel im Internet über mod_rewrite gelesen, aber gänzlich durchblicken tue ich noch nicht.
    Die Lima-City Suche hat mir am Ende nochmal entscheidend geholfen, sodass es nun grundlegend schonmal funktioniert:

    RewriteEngine on
    RewriteCond %{REQUEST_URI} /[a-z]+$
    RewriteRule (.*) index.php?site=$1 [QSA]
    ErrorDocument 404 notfound.html


    "http://www.meinedomain.de/blabla" wird also durch folgende URL ersetzt "http://www.meinedomain.de/index.php?site=blabla"

    Die RewriteCond besagt, dass am ende nur eine Zeichenfolge, bestehend aus kleinen Buchstaben, stehen kann + Blackslash vor den Zeichen. Nun funktioniert es schon fast super, sobald ich aber quasi noch mind. einen Ordner tiefer gehe, fängt er an zu spinnen. Die RewriteCond ist ja (komischerweise) immernoch erfüllt, wenn ich z.B. "http://www.meinedomain/foo/bar/toast/brot/blabla" schreibe. Dann sehe ich auch die index.php Datei mit Standard Inhalt. "$_GET['site']" enthält dann wahrscheinlich irgendeinen komischen Wert, aber in der Switch Abfrage habe ich ja auch einen default Wert eingestellt, sodass es irgendwie Sinn ergibt. ABER die ".css" Datei erkennt er dann nicht mehr, die liegt normalerweise im gleichen Ordner wie die index.php Datei, jetzt sucht er sie wahrscheinlich in "http://www.meinedomain/foo/bar/toast/brot/blabla".

    Außerdem funktioniert die eigene Fehlerseite nicht, er zeigt mir statt der Fehlerseite, nur den Namen der Fehlerseite "notfound.html" an ( im Inhalt der "notfound.html" steht natürlich ein anderer Text ).

    Wie kann ich nun dafür sorgen, dass auch durch URLs ala "http://www.meinedomain/foo/bar/toast/brot/blabla" immernoch http://www.meinedomain/index.php" geöffnet wird und wie bekomme ich die 404 Fehlerseite zum Laufen?


    Grüße,
    SAM
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m**********n

    Allgemein würde ich das mit PHP über
    $url = $_SERVER["REQUEST_URI"];
    lösen.

    Sonst würde ich es so machen:
    RewriteCond %{REQUEST_FILENAME} !-f

    Damit du Bilder, CSS-Dateien usw. noch aufrufen kannst.
    RewriteRule ^/(.*)$ /index.php?site=$1 [QSA]



    Probier das mal.

    Lg

    mator
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!