So entfernen Sie den Link "Übergeordnetes Verzeichnis" aus dem Stammordner in der Apache-Verzeichnisliste

8

Wie kann ich die Verzeichnisliste in Apache für einen bestimmten Ordner (Stammordner) und seine Unterordner zulassen, ohne jedoch eine Verknüpfung zum übergeordneten Ordner dieses Stammordners anzuzeigen? Wenn sich der Benutzer in einem Unterordner befindet, wird der Link "Übergeordnetes Verzeichnis" angezeigt, um zum übergeordneten Verzeichnis zu navigieren. Wenn sich der Benutzer jedoch im Stammordner befindet, muss dieser Link "Übergeordnetes Verzeichnis" entfernt / ausgeblendet werden 'Hierarchie.

    
Khalid Amin 15.03.2012, 10:56
quelle

5 Antworten

3
___ answer10348160 ___

Sie können den Link "Übergeordnetes Verzeichnis" ausblenden, indem Sie Ihrer .htaccess-Datei Folgendes hinzufügen:

%Vor%

Aber dies wird es für jedes Verzeichnis verbergen.

Wenn Sie Zugriff auf die httpd-configs haben, könnten Sie versuchen, die Direktive aus dem Kontext pro Server zu entfernen:

%Vor%

Solange es keine IndexIgnore-Direktive in einem höheren Ordner gibt, sollte es für Sie funktionieren.

    
___ qstnhdr ___ So entfernen Sie den Link "Übergeordnetes Verzeichnis" aus dem Stammordner in der Apache-Verzeichnisliste ___ qstntxt ___

Wie kann ich die Verzeichnisliste in Apache für einen bestimmten Ordner (Stammordner) und seine Unterordner zulassen, ohne jedoch eine Verknüpfung zum übergeordneten Ordner dieses Stammordners anzuzeigen? Wenn sich der Benutzer in einem Unterordner befindet, wird der Link "Übergeordnetes Verzeichnis" angezeigt, um zum übergeordneten Verzeichnis zu navigieren. Wenn sich der Benutzer jedoch im Stammordner befindet, muss dieser Link "Übergeordnetes Verzeichnis" entfernt / ausgeblendet werden 'Hierarchie.

    
___ answer45006408 ___

Meine Lösung ist die folgende:

%Vor%     
___ antwort13280236 ___

Ich bin gerade auf das gleiche Problem gestoßen, und dies war das erste Suchergebnis, also dachte ich, ich würde meine Lösung teilen. Ich habe keinen Zugang zu httpd-configs in meinem Fall, also ging ich mit einem anderen Ansatz.

Da ich den indizierten Verzeichnisbaum nicht pflegen werde, brauchte ich eine Lösung, die nur im Indexstamm ohne spezifische Kenntnis ihrer Unterverzeichnisse existieren könnte. Es wird jedoch ein absoluter Pfad zum Indexstamm verwendet. Wenn sich die Struktur Ihres übergeordneten Ordners stark ändert, funktioniert dies möglicherweise nicht für Sie.

Ich habe einen CSS-URL-Attribut-Selektor verwendet, um den Link "Übergeordnetes Verzeichnis" auszublenden, wenn es zum übergeordneten Element des Indexstamms führte. Es hinterlässt eine leere Zeile, aber es ist zumindest nicht so einschüchternd wie der "403 FORBIDDEN" -Fehler, den ein Benutzer bekommt, wenn er zu oft auf Parent Directory klickt.

Theoretisch sollte der Fix so einfach sein wie das Hinzufügen einer Zeile zur .htaccess-Datei Ihres Indexstammverzeichnisses:

%Vor%

Es scheint jedoch, dass die einfache Lösung in IE nicht funktioniert, weil der Standard-Doctype des HTML, den Apache ausspuckt, zu alt ist, um Attributselektoren zu verwenden.

Stattdessen müssen wir den generierten Apache-Code mit unserem eigenen Doctype umgeben, indem wir HeaderName und ReadmeName-Schlüsselwörter in der htaccess-Datei. Ich ging mit dem HTML5 Doctype, obwohl es möglicherweise eine geeignetere Funktion gibt.

.htaccess-Datei:

%Vor%

_index_header.html Datei:

%Vor%

_index_footer.html Datei:

%Vor%

(Beachten Sie, dass der CSS-Selektor für das übergeordnete Element des Indexstamms ist)

Funktioniert in allen aktuellen Browserversionen, in denen ich es getestet habe (FF, IE, Chrome, Safari, Opera), und auch den ganzen Weg zurück zu IE 7.

Nun, da Sie sich die Mühe gemacht haben, diese Dateien zu erstellen, könnten Sie auch Ihren Index etwas pfiffiger machen. Das Apache-Dokument auf mod_autoindex bietet eine Reihe von Optionen, mit denen Sie Dinge optimieren können Was Sie mit CSS tun können.

    
___ tag123htaccess ___ Konfigurationsdatei auf Verzeichnisebene, die von Apache-Webservern verwendet wird. Verwenden Sie dieses Tag genau dann, wenn der .htaccess-Inhalt direkt am Thema beteiligt ist. Wir wissen, dass viele Leute .htaccess verwenden, aber bitten Sie die Mitglieder der Community, dieses Tag nicht zu verwenden, es sei denn, Sie wissen, dass es sich um ein Thema in Ihrer Frage handelt. ___ answer24898097 ___

Es scheint, als ob Sie nicht die richtige Frage stellen.

Wenn Sie verhindern wollen, dass Benutzer auf das obere Verzeichnis zugreifen, wird das Entfernen des Links nichts für Sie lösen, da jeder das letzte Verzeichnis einfach aus der URL entfernen kann.

Wenn Ihr Unterordner beispielsweise %code% ist und Ihr %code% auf %code% gesetzt ist und Sie den Link %code% freigeben, kann jeder noch auf %code% oder %code% zugreifen, auch ohne diesen übergeordneten Ordner "Link.

Was Sie tun könnten, ist:

  • Setzen Sie "leer" index.html in jeden Ordner über "Unterordner". Apache wird das dann anbieten Datei statt aufzulisten, damit die Benutzer nicht wissen, was in "geheim" oder "Bienenstock" ist.

  • Deaktivieren Sie die Auflistung in jedem Ordner über "Unterordner". Apache wird sich dann weigern zu zeigen die Liste, damit die Benutzer nicht wissen, was in "geheim" oder "Bienenstock" ist.

Wenn Benutzer jedoch in der Lage sind, Namen von Dateien zu erraten, könnten sie trotzdem eine gültige URL wie %code% zusammenstellen und mit genügend Glück (und / oder Versuchen) könnten sie es trotzdem tun einige nicht-öffentliche Informationen.

Was Sie tun sollten ist:

  • Setzen Sie %code% auf %code% ,

  • oder (besser) DocumentRoot beibehalten, aber alles, was nicht öffentlich ist aus %code% entfernen.

So zeigt %code% nur die öffentlichen Informationen an und es gibt keine (HTTP) Möglichkeit, wie Benutzer nach fragen können.

    
___ tag123directory ___ Ein Verzeichnis oder Ordner ist ein virtueller Container innerhalb eines digitalen Dateisystems, in dem Gruppen von Computerdateien und anderen Verzeichnissen aufbewahrt und organisiert werden können. ___ tag123apache ___ Verwenden Sie dieses Tag (zusammen mit einem entsprechenden Programmiersprache-Tag) für die Programmierung von Fragen zum Apache HTTP Server. Verwenden Sie dieses Tag nicht für Fragen zu anderen Apache Foundation-Produkten. Beachten Sie, dass Fragen zur Serverkonfiguration normalerweise besser auf https://serverfault.com passen ___ tag123webserver ___ Eine Softwareanwendung, die Anfragen von Clients mit dem Hypertext Transfer Protocol bedient. ___ answer31904749 ___

Es gibt einen funktionierenden Trick, um dieses Problem zu lösen, indem der URL-Pfadname über JQuery überprüft wird. Fügen Sie einfach diesen Code oben in Ihrer .htaccess-Datei hinzu (offensichtlich können wir hier keine Absatzzeilen trennen):

%code%

Hinweis:

  • Sie müssen möglicherweise den Pfadnamen Länge ändern, in meiner Website ist " 4 ", weil meine Archiv-Root in einem sekundären Unterverzeichnis beginnt (wenn deins im Hauptstamm beginnt, versuchen Sie es anders Werte zB "3" oder "2", oder überprüfen Sie einfach Ihren Standort. Länge des Pfadnamens vor allem).

  • Der " tr: nth-of-type (2) css verweist auf den zweiten Datensatz, also den, der das" PARENT DIRECTORY "verwalten soll, das wir ausblenden wollen Der URL-Ort ist unsere Hauptwurzel.

Viel Spaß!

    
___
VisibleMan 07.11.2012, 23:43
quelle
23

Sie können den Link "Übergeordnetes Verzeichnis" ausblenden, indem Sie Ihrer .htaccess-Datei Folgendes hinzufügen:

%Vor%

Aber dies wird es für jedes Verzeichnis verbergen.

Wenn Sie Zugriff auf die httpd-configs haben, könnten Sie versuchen, die Direktive aus dem Kontext pro Server zu entfernen:

%Vor%

Solange es keine IndexIgnore-Direktive in einem höheren Ordner gibt, sollte es für Sie funktionieren.

    
Lukas Schulze 27.04.2012 09:28
quelle
1

Es gibt einen funktionierenden Trick, um dieses Problem zu lösen, indem der URL-Pfadname über JQuery überprüft wird. Fügen Sie einfach diesen Code oben in Ihrer .htaccess-Datei hinzu (offensichtlich können wir hier keine Absatzzeilen trennen):

IndexHeadInsert "<script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script><script>$(document).ready(function(){if(document.location.pathname.split('/').length<4){$('tr:nth-of-type(2)').hide();}});</script>"

Hinweis:

  • Sie müssen möglicherweise den Pfadnamen Länge ändern, in meiner Website ist " 4 ", weil meine Archiv-Root in einem sekundären Unterverzeichnis beginnt (wenn deins im Hauptstamm beginnt, versuchen Sie es anders Werte zB "3" oder "2", oder überprüfen Sie einfach Ihren Standort. Länge des Pfadnamens vor allem).

  • Der " tr: nth-of-type (2) css verweist auf den zweiten Datensatz, also den, der das" PARENT DIRECTORY "verwalten soll, das wir ausblenden wollen Der URL-Ort ist unsere Hauptwurzel.

Viel Spaß!

    
MrSnowDrop 09.08.2015 13:30
quelle
0

Es scheint, als ob Sie nicht die richtige Frage stellen.

Wenn Sie verhindern wollen, dass Benutzer auf das obere Verzeichnis zugreifen, wird das Entfernen des Links nichts für Sie lösen, da jeder das letzte Verzeichnis einfach aus der URL entfernen kann.

Wenn Ihr Unterordner beispielsweise /var/www/secret/hive/subfolder ist und Ihr DocumentRoot auf /var/www gesetzt ist und Sie den Link http://your.example.com/secret/hive/subfolder freigeben, kann jeder noch auf http://your.example.com/secret/ oder http://your.example.com/secret/hive zugreifen, auch ohne diesen übergeordneten Ordner "Link.

Was Sie tun könnten, ist:

  • Setzen Sie "leer" index.html in jeden Ordner über "Unterordner". Apache wird das dann anbieten Datei statt aufzulisten, damit die Benutzer nicht wissen, was in "geheim" oder "Bienenstock" ist.

  • Deaktivieren Sie die Auflistung in jedem Ordner über "Unterordner". Apache wird sich dann weigern zu zeigen die Liste, damit die Benutzer nicht wissen, was in "geheim" oder "Bienenstock" ist.

Wenn Benutzer jedoch in der Lage sind, Namen von Dateien zu erraten, könnten sie trotzdem eine gültige URL wie http://your.example.com/secret/password.txt zusammenstellen und mit genügend Glück (und / oder Versuchen) könnten sie es trotzdem tun einige nicht-öffentliche Informationen.

Was Sie tun sollten ist:

  • Setzen Sie DocumentRoot auf /var/www/secret/hive/subfolder ,

  • oder (besser) DocumentRoot beibehalten, aber alles, was nicht öffentlich ist aus /var/www entfernen.

So zeigt http://your.example.com/ nur die öffentlichen Informationen an und es gibt keine (HTTP) Möglichkeit, wie Benutzer nach fragen können.

    
Alois Mahdal 22.07.2014 21:23
quelle
0

Meine Lösung ist die folgende:

%Vor%     
Chirstian 10.07.2017 07:46
quelle