Request_Uri über .htaccess weiterleiten

  • Eine meiner Seiten wird von verschiedenen anderen Seiten mit folgender Syntax aufgerufen:

    http://www.domain.tld/userkennung


    Die Userkennung ist immer unterschiedlich und wird nicht als Parameter (?userkennung oder ?user=userkennung) übermittelt, sondern so als wäre es ein Unterordner. Jetzt könnte ich für jeden möglichen User diesen Unterordner "userkennung" anlegen mit einer index.html und einer Weiterleitung auf eine zentrale Seite oder mit einem .htaccess und einer ErrorDocument Seite, die ebenfalls weiterleitet.


    Besser wäre es, wenn man auf http://www.domain.tld direkt dies mittels .htaccess abfangen und die Request_Uri über das aufgerufene ErrorDocument oder per Rewrite auf die zentrale Seite weiterleiten könnte. Dort könnte ich die Uri auswerten und entsprechend der Userkennung verarbeiten.


    Gibt es da eine Möglichkeit und wie würde dies funktionieren?

  • Ich habe jetzt folgendes in .htaccess eingebaut was auf der Domain am remote server funktioniert, der Parameter wird per GET an die 404.html weitergeleitet:

    RewriteEngine On

    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule . /404.html?param=%{REQUEST_FILENAME} [L]


    Am Testrechner mit xampp installiert und dem Aufruf
    localhost/dir/xyz.html

    wobei xyz.html nicht existiert erhalte ich die Meldung, dass die URL nicht existiert, obwohl mode_rewrite eingebunden ist.


    Wenn ich statt der RewriteRule aber ErrorDocument zur Weiterleitung verwende, klappt die Weiterleitung, aber ich kann halt REQUEST_FILENAME nicht mitgeben.


    Hat jemand eine Idee woran es beim localen Aufruf liegen könnte, dass rewrite nicht klappt?

  • Ich habe inzwischen gelesen dass der Rewrite nur funktioniert, wenn man einen VHOST über localhost anlegt!


    Ich habe jetzt noch eine IF Abfrage in die .htaccess eingebaut, was dazu führt, dass der Server endlos looped! Hat jemand eine Idee, wie eine IF einen Endlosloop in der .htaccess hervorrufen kann?

  • Da du hier seid einer Woche keine Antwort bekommst solltest du vieleicht in ein anderen Forum fragen.

    Für deine frage gibt es hier nicht genug Profis die das beherschen und die das können sind auch nicht so oft Online.


    Dein Code hat zwar nix mit Php am Hut , doch im Php Forum sind Leute die das können.

    Da du ja schon eine Woche auf Antwort wartest ist das auch kein Crossposting.

    Du mußt nur im andern Forum bescheid geben das du hier gefragt hast aber sich noch keiner gemeldet hat.

    Dann nimmt dir das auch keiner Übel wegen den Crosspost

  • Danke für die Rückmeldung,

    ich hatte aber heute Nacht eine Idee und die habe ich ausprobiert und es klappt! Man darf anscheinend die einzelnen Rewrite Statements nicht durch ein anderes Statement (<IF>) trennen, sondern muss sie direkt hintereinander setzen, ist nicht so wie in "normalen" Programmiersprachen:

    Code
    1. <IfModule mod_rewrite.c>
    2. <IF "%{HTTP_HOST} == 'weltladen.rachbauer.org'">
    3. RewriteEngine On
    4. RewriteBase /
    5. RewriteCond %{REQUEST_FILENAME} !-f
    6. RewriteCond %{REQUEST_FILENAME} !-d
    7. RewriteRule . http://weltladen.rachbauer.org/404.html?param=%{REQUEST_URI} [L]
    8. </IF>
    9. </IfModule>

    Arne: Ich verwende lokal die XAMPP Installation, aber anscheinend kann die RewriteRule nicht /404.html oder localhost/weltladen/404.html aufrufen, wenn der Aufruf nicht über eine Domain oder einen Virtuellen Host erfolgt.

  • Natürlich muss es über den localhost laufen. Ein http:// Aufruf routet natürlich ganz normal ins WWW.

    Ich nutze zwar selten XAMPP, aber Du kannst in Deiner hosts Datei unter Windows einfach ne Domain als Alias für Deinen localhost setzen, dann kannst Du lokal testen, als wäre es online.