mod_rewrite username als Verzeichnis

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mod_rewrite username als Verzeichnis

    Hallo Forum,

    ich komme gerade nicht weiter - folgendes Problem:

    Es gibt die Datei:

    instructors.php

    die mit einer GET-Variable eine Seite aufruft:

    instructors.php?ins_id=2

    Daran kann ich soweit nichts ändern.

    Zu der ins_id=2 gibt es in meiner Datenbank den username "fab".

    Ich möchte:

    www.domain.de/fab

    möglich machen.

    Muss ich nun für jeden usernamen eine Rule schreiben?

    PHP-Code:
    RewriteRule ^fabinstructors.php?ins_id=2
    RewriteRule 
    ^anderer_userinstructors.php?ins_id=
    ... u.s.w.?

    Wie bekomme ich die usernames in die htaccess?

    Oder wie ginge es sonst?

    Vielen Dank für Eure Hilfe!

    Fabian

  • #2
    Gegenfrage, woher soll die htaccess-Datei wissen, was in deiner SQL-Datenbank steht?

    Am sinnigsten wäre es, die Datei zu erweitern.
    Wenn das nicht geht, könnte man schnell (und dreckig) ne Container-Datei erstellen, die
    a) die ID zum Usernamen holt und diesen als $_GET['id'] definiert und
    b) die Original-Datei includiert.

    Kommentar


    • #3
      Hallo TobiaZ,

      danke für Deine Tipps!

      Datei erweitern:

      Wäre ja technisch kein Problem - habe nur vorhin mal testweise die (bisher) 700 User in die .htaccess geschrieben: Dateigröße = 56 K

      Das lass ich dann lieber...

      Wie soll die Container-Datei heißen, sodass diese bei www.domain.de/fab aufgerufen wird? Oder verstehe ich das falsch?

      Nochmals danke für die Hilfe,

      Gruß
      Fabian

      Kommentar


      • #4
        Kannst auch eine RewriteMap anlegen, welche die Zuordnung Name -> Id on the fly aus der DB zieht.

        Kommentar


        • #5
          Danke, onemorenerd für den Hinweis!

          Muss ich für eine RewriteMap auch die http.conf bearbeiten - weißt Du das zufällig? Hier sieht es so aus:

          http://forum.de.selfhtml.org/archiv/2006/5/t129585/

          Würde ja auch gern TobiaZ Tipp verfolgen, verstehe nur folgendes nicht:

          Wenn jemand: www.domain.de/fab eingibt, welche Datei soll diese URL "entgegen" nehmen? Denn der Aufruf ist ja ein Verzeichnis, welches auf dem Server nicht existiert?

          Bin für jeden Tipp dankbar...

          Gruß
          Fabian

          Kommentar


          • #6
            Original geschrieben von fab_k
            Muss ich für eine RewriteMap auch die http.conf bearbeiten - weißt Du das zufällig?
            http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritemap - siehe Context (im Klartext: ja, RewriteMap muss in der Server- oder VHostkonfiguration stehen, nicht in .htaccess)

            Würde ja auch gern TobiaZ Tipp verfolgen, verstehe nur folgendes nicht:

            Wenn jemand: www.domain.de/fab eingibt, welche Datei soll diese URL "entgegen" nehmen? Denn der Aufruf ist ja ein Verzeichnis, welches auf dem Server nicht existiert?
            Per .htaccess im DocRoot kannst du solche Aufrufe auf ein Script deiner Wahl umlenken. Das geschieht entweder mittels ErrorDocument-Direktive oder durch normales Rewriting (also ohne RewriteMap).

            Kommentar


            • #7
              Habe gerade versucht, das Problem über ErrorDocument zu lösen. In meiner .htaccess steht:

              PHP-Code:
              RewriteEngine on
              ErrorDocument 404 
              /error.php 
              Nun möchte ich ja in meiner error.php eine Abfrage machen, brauche dazu jedoch den eingegebenen username: meinedomain/fab .

              Komme da nur nicht heran über $_SERVER['PHP_SELF'].

              $_SERVER['PHP_SELF'] gibt mir "error.php" aus - nicht "fab".

              Habt Ihr evtl. eine Idee, wie es klappen könnte?

              Danke!
              Zuletzt geändert von fab_k; 08.01.2009, 18:51.

              Kommentar


              • #8
                also ich würde da eher die rewritemap benutzen und diese mit php immer erweitern (wenn neue user dazu kommen)
                Gruß
                Uzu

                private Homepage

                Kommentar


                • #9
                  Hallo,

                  ich komme leider nicht so ohne Weiteres an die http.conf - daher würde ich es sehr gern über ErrorDocument machen.

                  Danke aber für den Hinweis - wenn es gar nicht anders geht, werde ich es vielleicht doch noch mit der Map versuchen...

                  Gruß
                  Fabian

                  Kommentar


                  • #10
                    Original geschrieben von fab_k
                    Komme da nur nicht heran über $_SERVER['PHP_SELF'].

                    $_SERVER['PHP_SELF'] gibt mir "error.php" aus - nicht "fab".

                    Habt Ihr evtl. eine Idee, wie es klappen könnte?
                    var_dump($_SERVER);

                    Kommentar


                    • #11
                      das hatte ich schon probiert...

                      Leider liefert bei dem Aufruf:

                      www.domain.de/fab

                      kein Wert der $_SERVER Variablen den Wert "fab"...

                      ("höchstens" error.php, die dann in der Adresseleiste steht)



                      edit: auch die $_SERVER['HTTP_REFERER'] liefert keinen Wert
                      Zuletzt geändert von fab_k; 09.01.2009, 12:21.

                      Kommentar


                      • #12
                        Du darfst das ErrorDocument nicht per http://example.com/path/errdoc.php angeben, weil der Apache dann intern einen neuen Request erzeugt. Schreib einfach nur /path/errdoc.php ... und dann schau dir $_SERVER['REQUEST_URI'] an. Wenn das bei dir nicht funktioniert, weiß ich auch keinen Rat mehr.

                        Btw: ErrorDocument hat nichts mit mod_rewrite zu tun, daher ist RewriteEngine On hier überflüssig.

                        Kommentar


                        • #13
                          Wenn ich das http://... weglasse, funktioniert das ErrorDocument nicht mehr. Bekomme dann einfach "Diese Seite kann nicht angezeigt werden... HTTP404..." angezeigt.

                          Danke für die Hilfe!

                          Kommentar


                          • #14
                            Welche Apache-Version?
                            Zeig mal den Ausschnitt aus deiner .htaccess!

                            Kommentar


                            • #15
                              ErrorDocument 404 /error.php

                              ^ Das steht in der .htaccess, mehr nicht...
                              Hatte es auch schon mit ./error.php versucht.

                              Wie gesagt, mit absolutem Pfad geht es.

                              Server:

                              System Linux pro23 2.6.22.9 #1 SMP
                              Server API Apache 2.0 Handler
                              Apache Version Apache/2.0.54 (Debian GNU/Linux) DAV/2 FrontPage/5.0.2.2635 PHP/4.3.10-22 mod_ssl/2.0.54 OpenSSL/0.9.7e

                              Kommentar

                              Lädt...
                              X