(Apache 1.3.x) Directory Index
Thoralf Knuth
- webserver
Hallo SelfGemeinde,
aufgrund der Nachfrage eines Besuchers ist mir bei einer meiner Seiten etwas aufgefallen, wo ich schon keine Idee für einen Lösungsansatz habe. Ich habe auf meinem Server per Basic Auth in der .htaccess einen Passwortschutz für den Verzeichnisindex eingerichtet, so dass ich als Admin durch die Verzeichnisse browsen kann, der gemeine User aber nicht. Dennoch sollen natürlich die Dateien ohne Passwort erreichbar sein, denn es geht ja nur um den Index. Klappt auch soweit einwandfrei, nur: Wenn der Besucher http://www.example.org/verzeichnis/ eingibt, leitet der Apache 1.3.x nicht auf http://www.example.org/verzeichnis/index.php um, sondern frägt nach Auth. Wat nu? http://www.example.org/verzeichnis/index.php direkt geht natürlich wie alle anderen auch, was der Indianer macht, ist ja richtig, ist genau das, was ich ihm gesagt hab, nur nicht genau das, was ich will.
Nun meine Frage: Kann ich Options +Indexes so verwenden, dass dennoch, wenn vorhanden, eine index.php angezeigt wird, und nicht das Listing?
Entsprechender Auszug:
Options +Indexes
AuthType Basic
AuthName "Eingeschraenkter Zugriff auf den Verzeichnisindex"
AuthUserFile /(.....)/.htpasswd
require valid-user
<Files *.*>
Order Deny,Allow
Allow from all
Satisfy Any
</Files>
Also wie es jetzt ist:
.../ -> Passwort -> Directory-Index -> Klick -> index.php
Was ich will:
.../ -> Gibt es index.php?
+- Ja: --> index.php
+- Nein: --> Passwort -> Index -> ...
Geht dat?
Gruss, Thoralf
Hallo,
Nun meine Frage: Kann ich Options +Indexes so verwenden, dass dennoch, wenn vorhanden, eine index.php angezeigt wird, und nicht das Listing?
Hast du schon mit:
DirectoryIndex index.php
versucht?
Grüße
Thomas
Hallo,
DirectoryIndex index.php
steht in der httpd.conf eh drin, hab es aber explizit noch einmal in die .htaccess geschrieben, keine Änderung.
Gruss, Thoralf
Hallo,
DirectoryIndex index.php
steht in der httpd.conf eh drin, hab es aber explizit noch einmal in die .htaccess geschrieben, keine Änderung.
OK, dann die nächte Frage:
steht auch in der httpd.conf ein "AllowOverride All" ?
Z.B so:
AllowOverride AuthConfig FileInfo Indexes Limits Options
oder so:
AllowOverride All
Du drfst auch nicht vergessen, dass .htaccess "kaskadiert" d.h. weiter oben (in Verzeichnishierarchie definierete Regel gelten solange diese nicht überschriben werden (AllowOverride).
Dann solltest du wissen, dass du die <Files> Direktive innerhalb einer <Directory> Direktive verschachtenl kannst/darfs.
Also du kannst folgendes versuchen (aber nicht direkt im verzeichniss, sonder z.B. in einer .htaccess in deinem dokumentroot. ("home" verz.)
<Directory .... >
<Files index.php>
Order Deny,Allow
Allow from all
</Files>
<Files *.*>
Order Deny,Allow
Allow from all
Satisfy Any
</Files>
</Directory>
oder
<Directory>
<Files index.php>
Order Deny,Allow
Allow from all
<Files *.*>
Order Deny,Allow
Allow from all
Satisfy Any
</Files>
</Files>
</Directory>
Grüße
Thomas
Hallo,
bin über's Wochenende arbeitsmässig recht eingebunden, schau mir das heute abend mal an. Danke soweit. Nur diese kurze Nachricht, dass er net im Archiv verschwindet.
Gruss, Thoralf
morgens,
ich bin mir nicht ganz sicher, ob ich deine Frage korrekt verstanden habe, aber für
.../ -> Gibt es index.php?
+- Ja: --> index.php
+- Nein: --> Passwort -> Index -> ...
sollte es eigentlich eine sehr einfache Lösung geben. Dein Standarddokument darf halt nicht "index.php" heißen, sondern, entsprechend den Vorgaben deines Providers beispielsweise "index.shtm" (kann natürlich auch "index.cgi" oder sonstwas sein, solange dein Provider mitspielt). Damit rufst du dann irgendeine "intro.php" auf, die die Frage "gibt es" beantworten kann.
Und wenn du unbedingt bei "index.php" bleiben willst oder mußt, dann übergibst du der eben ganz einfach die Frage "gibt es index2.php" und alles wird gut ;-)
Grüße aus Berlin
Christoph S.
Hallo,
sollte es eigentlich eine sehr einfache Lösung geben. Dein Standarddokument darf halt nicht "index.php" heißen, sondern, entsprechend den Vorgaben deines Providers beispielsweise "index.shtm" (kann natürlich auch "index.cgi" oder sonstwas sein, solange dein Provider mitspielt).
index.php ist nach den Vorgaben schon richtig. ;)
Damit rufst du dann irgendeine "intro.php" auf, die die Frage "gibt es" beantworten kann.
Und genau das will ich eben nicht, da das ganze Domainweit konfiguriert wird und ich eben gerade nicht per Script die Auth machen will. Das ist kein Problem.
In der Überlegung, so wie es jetzt ist, ist das schon richtig. Es geht im Prinzip darum, ob ich umstellen kann, dass erst die DirectoryIndex-Anweisung ausgewertet wird und erst danach die Authentifizierung erfolgt.
Gruss, Thoralf
hallo Thoralf,
ich bin nicht absolut sicher, ob ich dich wirklich verstanden habe, glaube jedoch, daß das der Fall ist.
Es geht im Prinzip darum, ob ich umstellen kann, dass erst die DirectoryIndex-Anweisung ausgewertet wird und erst danach die Authentifizierung erfolgt.
lokal bei mir ist das möglich. Allerdings _nur_ dann, wenn ich im "main server configuration"-Abschnitt der httpd.conf DirectoryIndex ganz rauslasse und das dann von _allen_ virtuellen hosts bzw. mit .htaccess vom jeweiligen user selber konfiguriert werden muß. Es dürfte nun kaum möglich sein, einen Provider davon zu überzeugen, daß er in "main server configuration" (Abschnitt 2 der httpd.conf) genau an dieser Stelle gar keine Vorgaben machen, sondern alles den usern überlassen soll.
Christoph S.
Hallo Christoph,
ich bin nicht absolut sicher, ob ich dich wirklich verstanden habe, glaube jedoch, daß das der Fall ist.
doch, ich glaube, inzwischen bist Du auf der gleichen Spur wie ich.
Es geht im Prinzip darum, ob ich umstellen kann, dass erst die DirectoryIndex-Anweisung ausgewertet wird und erst danach die Authentifizierung erfolgt.
lokal bei mir ist das möglich. Allerdings _nur_ dann, wenn ich im "main server configuration"-Abschnitt der httpd.conf DirectoryIndex ganz rauslasse und das dann von _allen_ virtuellen hosts bzw. mit .htaccess vom jeweiligen user selber konfiguriert werden muß.
Ich hab das hier lokal mal nachgestellt und komme zum gleichen Ergebnis wie online. Er will zuerst, das Passwort haben und erst danach kommt ggf. die index.php.
Es dürfte nun kaum möglich sein, einen Provider davon zu überzeugen, daß er in "main server configuration" (Abschnitt 2 der httpd.conf) genau an dieser Stelle gar keine Vorgaben machen, sondern alles den usern überlassen soll.
Zweitrangig, jetzt will ich wissen, ob das geht ;)
Gruss, Thoralf
guten Abend,
jetzt will ich wissen, ob das geht ;)
Da kann ich dir nur sagen, _daß_ es geht (jedenfalls lokal im LAN).
Ich habe bloß ein Problem damit, dir zu zeigen, _wie_ das aussieht bzw. aussehen kann. Klar kann ich meine httpd.conf als Textfile hochladen, bloß hat die ein sicher sehr ungewohntes Aussehen, weil sie aliases, virtuelle hosts und noch allerhand anderes jeweils per include-Befehl aus externen Dateien zulädt. Außerdem müßte ich auch noch eine PHP-Konstruktion als Textfiles zugänglich machen, mit der ich das durchgespielt habe - mich interessierte deine Fragestellung schließlich auch. Den ganzen Krempel hier zu posten, ist zuviel verlangt, das hat doch nen bißchen zuviel Volumen.
Was machen wir da? Gibst du dich erstmal damit zufrieden, _daß_ es geht und bastelst im stillen Kämmerlein weiter oder soll ich es doch noch irgendwo auf eine temporäre Adresse hochschubsen (mache ich aber heute nicht mehr, das ist auch mit ein bißchen Arbeit verbunden)? Notfalls gibt es auch die mail-Adresse, aber ich halte es für falsch, einen im Forum begonnenen Thread per mail fortzusetzen, solange er noch nicht im Archiv verschwunden ist.
abendliche Grüße aus Berlin
Christoph S.
N'Abend,
zunächste Danke für die verbissene Hilfe. ;)
Außerdem müßte ich auch noch eine PHP-Konstruktion als Textfiles zugänglich machen, mit der ich das durchgespielt habe
Da bin ich stutzig geworden. Mit PHP ist das kein so grosses Problem, mir ging und geht es um die reine Serverlogik, oder versteh ich Dich jetzt falsch? Also eine Lösung nur im Apache. :)
Was machen wir da? Gibst du dich erstmal damit zufrieden,
Erstmal ja, wenn das zu keinem Ergebnis führt, spreche ich Dich nochmal an, aber da das im konkreten Projekt nicht pressiert, hat das nur akademisches Interesse :)
Gruss, Thoralf
guten Abend nochmal,
Außerdem müßte ich auch noch eine PHP-Konstruktion als Textfiles zugänglich machen, mit der ich das durchgespielt habe
Da bin ich stutzig geworden. Mit PHP ist das kein so grosses Problem
Schon klar. Du hattest aber als Ausgangs"position" dafür eine php-Konstruktion genannt, also bin ich bei dieser Logistik geblieben.
mir ging und geht es um die reine Serverlogik, oder versteh ich Dich jetzt falsch? Also eine Lösung nur im Apache. :)
Nein, du verstehst mich richtig.
Was machen wir da? Gibst du dich erstmal damit zufrieden,
Erstmal ja
Gut. Gegen gelegentliche akademische Debatten ist allerdings auch nix einzuwenden.
Grüße aus Berlin
Christoph S.