Olaf Schneider: .htaccess Authentifizierung für einzelne URLs

Hallo,

folgendes Szenario: Ich habe eine Website, die Gebrauch von mod_rewrite macht: Jede URL wird einfach als Wert an eine (immer gleiche) php-Datei übergeben, die das Handling übernimmt.

Jetzt gibt es einige URLs, die ich gerne mit einer Authentifizierung versehen möchte.

Eine Möglichkeit (Quick'n'dirty): mod_rewrite so erweitern, so dass diese URLs auf eine zweite php-Datei in einem anderen Verzeichnis übergeben werden. Diese php-Datei includiert lediglich die schon existierende php-Datei, aber das Verzeichnis lässt sich ja schützen.

Ich finde diese Lösung alles andere als elegant, geschweige denn sicher und frage mich, ob es bessere - einfachere - schlankere Umsetzungen gibt. <LocationMatch> und andere schöne Dinge kann ich ja in .htaccess leider nicht verwenden.

Ideen dazu wären nett.

Gruß
Olaf

  1. <LocationMatch> und andere schöne Dinge kann ich ja in .htaccess leider nicht verwenden.

    Aber <FilesMatch> könntest du ggf. verwenden, je nach Struktur.

    1. Hallo Rob,

      Aber <FilesMatch> könntest du ggf. verwenden, je nach Struktur.

      soweit ich verstanden habe, bezieht sich <Files> und <FilesMatch> aber auf reale Namen im Dateisystem. Ich möchte dagegen, dass z.B alle Pfade unter

      http://example.org/

      normal behandelt werden, bis auf

      http://example.org/foo/bar

      (Die Struktur ist nur virtuell und spiegelt keine Verzeichnispfade)

      Gruß
      Olaf

      1. Hallo Olaf.

        Ja, dazu müsste das Verzeichnis foo existieren, es kann dann aber auch leer sein. bar muss nicht existieren.

        <FilesMatch "bar$">
        ....
        </FilesMatch>

        in einer .htaccess unter http://example.org/.htaccess würde dann z.B. funktionieren.

        Bei http://example.org/sonder-behandlung (also kein nicht-existierendes Verzeichnis dazwishen) gäbe es keine Probleme.

        grüße
        Robert

        1. Hallo Robert,

          vielen Dank für Deine Antwort. Das Prinzip ist mir klar. Abgesehen von der kleinen Unstimmigkeit des nur eine .htaccess enthaltenen foo-Verzeichnisses gibt es allerdings dann noch die Unschönheit, dass ich auch unter foo/.htaccess mod_rewrite benutzen müsste, um alle URLs unter http://example.org/foo zu behandeln. Das hätte ich aber doch lieber zentral.

          Hmm, nicht soo trivial.

          Gruß
          Olaf

          1. Warum brauchst du eine .htaccess in /foo/.htaccess? Das mit <FilesMatch> würde auch aus dem root gehen (bei mir zumindest).
            Für mod_rewrite brauchst du nur eine im Unterverzeichnis, wenn in /foo/.htaccess andere RewriteRules definiert (und damit die RewriteRules aus /.htaccess überschrieben) werden.

            Grüße
            Robert

            1. Hallo Robert,

              so geht es. Einschränkung: /foo/bar und /foo2/bar sind nur gemeinsam zu schützen, das brauche ich aber diesem Fall nicht. Ich hatte halt gedacht, dass File auch wirklich Datei meint.

              Vielen Dank für Deine Hilfe,

              Gruß
              Olaf