Tom: Rewrite-Engine

Hello,

ich habe da ein Problem mit meinem Apachen und der rewrite Engine

Aufruf:

http://testserver/~thomas/php4/Rewrite-Engine/bild_345.jpg

.htaccess:

RewriteEngine on
RewriteRule   bild_(\d*).jpg$   get_bild.php?b=$1

Server-Antwort:

Not Found

The requested URL /home/thomas/web/php4/Rewrite-Engine/get_bild.php was not found on this server.

Die Datei 'get_bild.php' ist im Verzeichnis vorhanden und lässt sich auch direkt aufrufen über HTTP

Was mach ich denn da falsch?

Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  1. Lieber Tom,

    RewriteEngine on
    RewriteRule   bild_(\d*).jpg$   get_bild.php?b=$1

    bin mir da auch nicht ganz sicher, aber zwei Ideen habe ich.

    1.) Brauchst Du ganz sicher keine RewriteCondition?
    2.) Was ist, wenn Du den Pfad zur get_bild.php absolut angibst?

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hello Felix,

      RewriteEngine on
      RewriteRule   bild_(\d*).jpg$   get_bild.php?b=$1

      bin mir da auch nicht ganz sicher, aber zwei Ideen habe ich.

      1.) Brauchst Du ganz sicher keine RewriteCondition?

      Hab ich bisher für solche einfachen Umleitungen nie benutzt.
      Das heißt aber nicht, das man keine braucht.

      2.) Was ist, wenn Du den Pfad zur get_bild.php absolut angibst?

      Er bemängelt ja das richtige File und es liegt auch dort.
      Direkt lässt es sich auch aufrufen.

      Harzliche Grüße vom Berg
      http://bergpost.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  2. Hallo Tom,

    .htaccess:

    RewriteEngine on

    RewriteBase fehlt. Kann Dir nicht garantieren, dass es daran liegt, würde aber die Fehlermeldung erklären.

    Viele Grüße,
    Christian

    1. Hello Christian,

      .htaccess:

      RewriteEngine on

      RewriteBase fehlt. Kann Dir nicht garantieren, dass es daran liegt, würde aber die Fehlermeldung erklären.

      Schade, dass ist es nicht.

      The requested URL /home/thomas/web/php4/Rewrite-Engine/get_bild.php was not found on this server.

      Und wenn ich bewusst eine falsche Rewrite-Base einsetze, nimmt er die auch brav in die Fehlermeldung auf. Das File ist für ihn einfach nicht sichtbar. Es gehört aber der richtigen Gruppe an und lesen dürfen ohnehin alle User.

      Kann das an der Namensauflösung liegen? Ist ja ein lokaler Server und ich habe keinen DNS laufen dafür. Aber ein direkter Aufruf klappt schließlich auch.

      Client und HTTP-Server laufen aber auf zwei getrennten Hosts.

      Harzliche Grüße vom Berg
      http://bergpost.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

      1. Hallo Tom,

        Schade, dass ist es nicht.

        The requested URL /home/thomas/web/php4/Rewrite-Engine/get_bild.php was not found on this server.

        Was steht denn genau im Error-Log?

        Kann das an der Namensauflösung liegen?

        Nein.

        Viele Grüße,
        Christian

        1. Hello,

          Was steht denn genau im Error-Log?

          Access-Log:

          192.168.101.44 - - [16/Nov/2007:01:37:18 +0100] "GET /home/thomas/web/php4/Rewrite-Engine/bild_9034.jpg HTTP/1.1" 404 398 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9"

          Error-Log:

          kein Eintrag zur Sache.

          Nun wird es auch ganz verrückt. Ich habe die Ressource zwischendurch direkt aufgerufen, was auch anstandslos funktioniert hat. Danach habe ich den Aufruf (siehe Access-Log) getätigt.

          Server-Meldung war diesmal:

          Not Found

          The requested URL /home/thomas/web/php4/Rewrite-Engine/bild_9034.jpg was not found on this server.

          Ich habe das unangenehme Gefühl, dass ich den Server irgendwie abgeschossen habe.

          Bei bewusst herbeigeführten Fehlern sind auch Einträge im Error-Log.
          In den Meldungen des Servers Richtung Client sind die rewrites durchgeführt, trotzdem 404 und KEIN Eintrag im Error-Log.

          Vorletzte Woche lief er noch.

          Was tun?

          Apt-get remove?

          Harzliche Grüße vom Berg
          http://bergpost.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

          1. Hello,

            so langsam komme ich der Sache doch auf die Spur...

            [Fri Nov 16 02:09:14 2007] [error] [client 192.168.101.44] File does not exist: /var/www/home
            [Fri Nov 16 02:09:22 2007] [error] [client 192.168.101.44] File does not exist: /var/www/home
            [Fri Nov 16 02:12:15 2007] [error] [client 192.168.101.44] File does not exist: /var/www/home/thomas
            [Fri Nov 16 02:12:18 2007] [error] [client 192.168.101.44] File does not exist: /var/www/home/thomas
            [Fri Nov 16 02:14:24 2007] [error] [client 192.168.101.44] File does not exist: /var/www/home/thomas/web
            [Fri Nov 16 02:14:27 2007] [error] [client 192.168.101.44] File does not exist: /var/www/home/thomas/web
            [Fri Nov 16 02:17:06 2007] [error] [client 192.168.101.44] script '/var/www/home/thomas/web/php4/Rewrite-Engine/get_bild.php' not found or unable to stat
            [Fri Nov 16 02:17:08 2007] [error] [client 192.168.101.44] script '/var/www/home/thomas/web/php4/Rewrite-Engine/get_bild.php' not found or unable to stat

            Der Bursche sucht das Rewrite-File nicht im User-Verzeichnis, sondern in einem entsprechenden Unterverzeichnis der Server-Root

            Ich habe den Pfad nun so nach und nach angelegt, und nun funktioniert es.

            Da besteht dann aber eine Fehlkonfiguration mit den User-Home-Verzeichnissen.
            Habe ich mich neulich schon dämlich nach gesucht, wo die eingestellt werden müssen.

            Aber wieso meldet der Server dem Client den vermeintlich richtigen Pfad für die umgeschriebene Suche, sucht aber selber unter seiner Server-Root danach?

            Harzliche Grüße vom Berg
            http://bergpost.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

            1. Lieber Tom,

              Der Bursche sucht das Rewrite-File nicht im User-Verzeichnis, sondern in einem entsprechenden Unterverzeichnis der Server-Root

              also dann doch

              2.) Was ist, wenn Du den Pfad zur get_bild.php absolut angibst?

              oder nicht?

              Liebe Grüße aus Ellwangen,

              Felix Riesterer.

              --
              ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
            2. Hello,

              Das modul Userdir ist geladen und seine Konfigurationsdatei auch.

              <IfModule mod_userdir.c>
                      UserDir web
                      UserDir disabled root

              <Directory /home/*/web>
                      AllowOverride FileInfo AuthConfig Limit Indexes
                      Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                      IndexOptions +NameWidth=* +FoldersFirst +IgnoreCase
                      <Limit GET POST OPTIONS>
                          Order allow,deny
                          Allow from all
                      </Limit>
                      <LimitExcept GET POST OPTIONS>
                          Order deny,allow
                          Deny from all
                      </LimitExcept>
                  </Directory>
              </IfModule>

              Braucht das Modul Rewrite keine Konfigurationsdatei?

              Wo liegt nun nun der Fehler?

              Es ist gleichgültig, ob ich für die Substituierung in der Rewrite-Rule ein vollen Pfad angegebe, die Datei wird immer in der Server-Root gesucht

              [Fri Nov 16 02:53:29 2007] [error] [client 192.168.101.44] script '/var/www/home/thomas/web/php4/Rewrite-Engine/get_bild2.php' not found or unable to stat

              Harzliche Grüße vom Berg
              http://bergpost.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

              1. Lieber Tom,

                vielleicht irre ich mich ja, aber was passiert mit einer solchen Einstellung?

                RewriteEngine on
                RewriteRule   bild_(\d*).jpg$   /php4/Rewrite-Engine/get_bild.php?b=$1

                Liebe Grüße aus Ellwangen,

                Felix Riesterer.

                --
                ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
                1. Hello Felix,

                  vielleicht irre ich mich ja, aber was passiert mit einer solchen Einstellung?

                  RewriteEngine on
                  RewriteRule   bild_(\d*).jpg$   /php4/Rewrite-Engine/get_bild.php?b=$1

                  Da sucht er dann auch in /var/www

                  [Fri Nov 16 03:11:12 2007] [error] [client 192.168.101.44] File does not exist: /var/www/php4

                  also der Document Root des (Haupt-)Servers
                  Ich habe noch keine Virt Hosts auf diesem hier eingerichtet.

                  Das macht er übrigens auch, wenn ich einen vollständigen Pfad angebe. Dann hängt er den einfach hinter die Document Root des Servers.

                  Harzliche Grüße vom Berg
                  http://bergpost.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau
                  Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                  1. Hello,

                    ich habe es jetzt so hingeschmuddelt...

                    testserver:/var/www# ls -la
                    insgesamt 0
                    drwxr-xr-x  3 root root 128 2007-11-16 03:40 .
                    drwxr-xr-x 14 root root 336 2007-04-14 15:22 ..
                    lrwxrwxrwx  1 root root  24 2007-04-14 15:22 analog -> /usr/share/analog/images
                    drwxr-xr-x  2 root root 312 2007-11-16 01:49 apache2-default
                    lrwxrwxrwx  1 root root   6 2007-11-16 03:40 home -> /home/

                    Einfach einen Link in /var/www/  für 'home'  auf /home/  gelegt.
                    Nun tut's für alle User.

                    Ich kann mir aber nicht vorstellen, dass dieses Verhalten normal ist.
                    Entweder, ich habe etwas vergessen einzustellen, oder das Ding hat 'ne Macke. Aber _das_ müsste ja schon mal jemand gemerkt haben...

                    Harzliche Grüße vom Berg
                    http://bergpost.annerschbarrich.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    Nur selber lernen macht schlau
                    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                  2. Hi Tom,

                    Das macht er übrigens auch, wenn ich einen vollständigen Pfad angebe. Dann hängt er den einfach hinter die Document Root des Servers.

                    Natürlich, schon mal den Manual-Eintrag zu RewriteBase gelesen? *fg*

                    Description:  Sets the base URL for per-directory rewrites
                      Syntax:       RewriteBase URL-path

                    Da ist von einem URL-Path die Rede und nicht von einem Pfad im Filesystem. Wenn du also

                    RewriteBase /home/thomas/pub/php4/Rewrite-Engine/

                    angibst, dann schreibt er alle Ziel-URLs um nach

                    http://<Host>/<RewriteBase>/<RewriteRule>
                      http://thomas-host.invalid/home/thomas/pub/php4/Rewrite-Engine/get_file.php

                    Letzteres dann als konkretes Beispiel. ;-) Dieses Ziel wird dann wie ein neuer Request behandelt und natürlich als Pfad im DocumentRoot /var/www nicht gefunden.

                    Probier also mal folgendes:

                    RewriteBase /~thomas/php4/Rewrite-Engine/

                    Sollte dann eigentlich funktionieren… ;-)

                    Viele Grüße,
                      ~ Dennis.

                    1. Hello Dennis,

                      Da ist von einem URL-Path die Rede und nicht von einem Pfad im Filesystem. Wenn du also

                      RewriteBase /home/thomas/pub/php4/Rewrite-Engine/

                      angibst, dann schreibt er alle Ziel-URLs um nach

                      http://<Host>/<RewriteBase>/<RewriteRule>
                        http://thomas-host.invalid/home/thomas/pub/php4/Rewrite-Engine/get_file.php

                      Letzteres dann als konkretes Beispiel. ;-) Dieses Ziel wird dann wie ein neuer Request behandelt und natürlich als Pfad im DocumentRoot /var/www nicht gefunden.

                      Probier also mal folgendes:

                      RewriteBase /~thomas/php4/Rewrite-Engine/

                      Sollte dann eigentlich funktionieren… ;-)

                      Werde ich nachher gleich testen.
                      Dass es auf der vorigen Installation ohne Rewrite Base ging, liegt vermutlich daran, dass dort jeder User einen eigenen Virt Host hatte. Das würde es erklärlich machen. Aber erst einmal abwarten, was die Gurke nachher sagt dazu.

                      Danke Dir jedenfalls schon mal für den Tipp

                      Harzliche Grüße vom Berg
                      http://bergpost.annerschbarrich.de

                      Tom

                      --
                      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                      Nur selber lernen macht schlau
                      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                    2. Hallo Dennis,

                      Das macht er übrigens auch, wenn ich einen vollständigen Pfad angebe. Dann hängt er den einfach hinter die Document Root des Servers.

                      Natürlich, schon mal den Manual-Eintrag zu RewriteBase gelesen? *fg*

                      Ich hab's ja gesagt. *scnr*

                      Viele Grüße,
                      Christian

                      1. Hello,

                        Das macht er übrigens auch, wenn ich einen vollständigen Pfad angebe. Dann hängt er den einfach hinter die Document Root des Servers.

                        Natürlich, schon mal den Manual-Eintrag zu RewriteBase gelesen? *fg*

                        Ich hab's ja gesagt. *scnr*

                        amüsiert Ihr Euch man...
                        Ich kann's im Moment ja noch nicht einmal ausprobieren :-(
                        Der Host ist noch beschäftigt.

                        Harzliche Grüße vom Berg
                        http://bergpost.annerschbarrich.de

                        Tom

                        --
                        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                        Nur selber lernen macht schlau
                        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                    3. Hello Dennis,

                      Description:  Sets the base URL for per-directory rewrites
                        Syntax:       RewriteBase URL-path

                      Da ist von einem URL-Path die Rede und nicht von einem Pfad im Filesystem. Wenn du also

                      RewriteBase /home/thomas/pub/php4/Rewrite-Engine/

                      angibst, dann schreibt er alle Ziel-URLs um nach

                      http://<Host>/<RewriteBase>/<RewriteRule>
                        http://thomas-host.invalid/home/thomas/pub/php4/Rewrite-Engine/get_file.php

                      Letzteres dann als konkretes Beispiel. ;-) Dieses Ziel wird dann wie ein neuer Request behandelt und natürlich als Pfad im DocumentRoot /var/www nicht gefunden.

                      Probier also mal folgendes:

                      RewriteBase /~thomas/php4/Rewrite-Engine/

                      Und so ist es auch richtig.

                      Bin endlich dazu gekommen, die ganzen rewrites in den User-Verzeichnissen vorzubereiten.
                      Nachdem der Server heute, nachdem ich ihn über Nacht neu aufgestzt hatte und auch die Daten schon herunter hatte von der Platte mit dem "kaputten" Kernel, nochmal in die Kernel Panic gelaufen war...

                      *Schock*.

                      Aber das lag daran, dass die alte Platte ja auch drinsteckte, und wohl einen Moment eher bereit war, als die neue. Das BIOS ist so blöd, dass es dann trot Einstellung "Booten von HDD0" von HDD1 booten will.

                      Ich muss nun also sehen, dass ich die Bootpartion auf der Platte wieder loswerde. Wie deinstalliert man grub?

                      Harzliche Grüße vom Berg
                      http://bergpost.annerschbarrich.de

                      Tom

                      --
                      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                      Nur selber lernen macht schlau
                      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                      1. Hi Tom,

                        Aber das lag daran, dass die alte Platte ja auch drinsteckte, und wohl einen Moment eher bereit war, als die neue. Das BIOS ist so blöd, dass es dann trot Einstellung "Booten von HDD0" von HDD1 booten will.

                        Vielleicht irgendein Code im MBR von HDD0, welcher ein Botten von HDD1 erzwingt? Ich kenne mich da allerdings nicht aus, dass ist mir zu Low-Level ;-)

                        Ich muss nun also sehen, dass ich die Bootpartion auf der Platte wieder loswerde. Wie deinstalliert man grub?

                        Warum willst du ihn deinstallieren? Du brauchst eigentlich immer einen Boat-Loader... Und wenn du dein System bzw. die Hardware deines Systems geändert hast, dann sollte es im Normalfall reichen, wenn du grub einmal neu laufen lässt. Dadurch sollte sich der Boat-Loader neu "installieren", also in den MBR oder sonstwohin schreiben.

                        Viele Grüße,
                          ~ Dennis.

                        1. Hello Dennis,

                          Ich muss nun also sehen, dass ich die Bootpartion auf der Platte wieder loswerde. Wie deinstalliert man grub?

                          Warum willst du ihn deinstallieren? Du brauchst eigentlich immer einen Boat-Loader... Und wenn du dein System bzw. die Hardware deines Systems geändert hast, dann sollte es im Normalfall reichen, wenn du grub einmal neu laufen lässt. Dadurch sollte sich der Boat-Loader neu "installieren", also in den MBR oder sonstwohin schreiben.

                          Ich will ihn ja nicht auf der Boot-Platte beseitigen, sondern auf derjenigen, die nur noch als Datenplatte benutzt wird. Da benötige ich kein grub mehr. Was nicht mehr da ist, kann nicht mehr reagieren.

                          Harzliche Grüße vom Berg
                          http://bergpost.annerschbarrich.de

                          Tom

                          --
                          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                          Nur selber lernen macht schlau
                          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)