Apache2: Weiterleitung statt 404

  • In Ermalngelung eines Forums, das sich mit dem Webserver direkt auseinandersetzt, poste ich jetzt mal hier.


    Mein Ziel ist es, mittels .htaccess unter Apache2, mod_rewrite aktiviert, alle Anfragen in einem Verzeichnis an eine php zu senden, es sei denn, es existiert explizit diese Datei.
    Dazu habe ich erst 2 Schritte zur Lösung:


    (1) Alle Anfragen, auch, wenn eine Datei existiert, werden weitergeleitet:

    Apache Configuration
    RewriteEngine on
    RewriteRule ^(.*)$ index.php


    (2) Alle Anfragen, sofern keine Datei existiert, werden weitergeleitet, aber ein Fehler an Browser und Log gemedet:

    Code
    ErrorDocument 404 /index.php


    Nun stellt sich mir die Frage, wie das beides zu kombinieren wäre.
    Also nur dann weitergeleitet wird, wenn die aufgerufene Datei nicht explizit existiert, aber das mit ganz normalen "200 - OK" statt des "404 - Not Found".


    Vielen Dank im Voraus!
    Lg, Artimis

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Beispiel bei dem du natürlich noch die Letzte Zeile anpassen musst (geklaut von Drupal).

    Apache Configuration
    # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_URI} !=/favicon.ico
      RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
  • Hallo ihr beiden.
    Danke erstmal für eure Antwort.


    Sorry, wenn ich so DAU-Like nach mundgerechten Stücken frage, aber ich habe leider Null Peilung, wie .htaccess-Regeln funzen. Ich fand sie auf dem ersten Blick recht fummelig und habe mich nie weitergehend damit befasst.


    Könntet ihr mir zeigen, wie die -f -Klausel einzubauen ist? Ich weiß nicht einmal, wie man die negiert, !(-f) oder ! [...] -f ? Wie gesagt, ich habe keine Ahnung von der Syntax.


    Wegen der Q- und S-Flags habe ich auf Anhieb nichts gefunden, werde gleich mal googlen.


    Vielen Dank!!!

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Das was ich da oben geschrieben hab ist schon fertig. Du musst nur noch die letzte Zeile anpassen.


    Inhaltlich steht da:


    WENN {request} KEINE Datei* &
    WENN {request} KEIN Ordner* &
    WENN {request} NICHT favicon.ico
    wende folgende Rewrite Rule an:


    ...


    *) im Dateisystem, also wirklich existierend


    Zitat

    'qsappend|QSA' (query string append)
    This flag forces the rewrite engine to append a query string part of the substitution string to the existing string, instead of replacing it. Use this when you want to add more data to the query string via a rewrite rule.

  • Oh man!
    Das passiert, wenn man vor dem Losfahren noch schnell antworten will...
    Sorry!


    Jo, jetzt, wo du's sagst xD


    Vielen Dank!


    //Gelöst

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de