curtis: Newbie-Frage zur .htaccess

Moin, moin,

zur .htaccess habe ich mal eine Frage... Ich habe veralteten Content gelöscht und hätte gerne, dass dieser aus dem Index genommen wird, sprich, dass HTTP-Code 410 angezeigt wird. Also habe ich ein bischen im www herumgesucht und dann versucht, mir eine .htacess einzurichten mit folgenden Regeln:

RewriteEngine On
RewriteRule /dokument1.pdf/ - [G]
RewriteRule /dokument2.pdf/ - [G]

Die .htaccess habe ich dann in demselben Verzeichnis wie die index.html-Datei abgelegt und hochgeladen.

Leider führt das zu einem 403-Fehler für die gesamte Domain. Was mache ich falsch...?

Vielen Dank schon mal...!

curtis

  1. Hallo curtis,

    das / vor und hinter dem Dateinamen - hast Du das von JavaScript abgeschaut? In einer RewriteRule gibt's keinen Delimiter. Apache würde die / als Directory-Slashes interpretieren. Die müssen weg.

    Da die RewriteRule in der .htaccess steht, bekommt die RewriteRule ohnehin nur den Teil des Dateinamens zu sehen, der relativ zu dem Ordner ist, in dem die .htaccess steht. Ein / zu Beginn des Patterns widerspricht dem und möglicherweise spuckt der Apache schon deshalb einen Error.

    Du musst auch den Punkt maskieren. Ein Punkt ist in einer Regex ein Wildcard-Zeichen, d.h. dokument1.pdf würde auch auf die Datei dokument14pdf zutreffen.

    Schlimmer noch: dieses Muster würde auch auf testdokument14pdf.doc zutreffen, weil eine Regex auch Teilstrings findet, wenn man das nicht abstellt.

    Zum Abstellen musst Du Anker hinzufügen: ^ für den Anfang des Texts und $ für das Ende.

    Dein Pattern müsste also ^dokument1\.pdf$ heißen.

    Die Gone-Option solltest Du dann noch um ein L (Last) ergänzen, damit der Apache keine weiteren RewriteRules mehr prüft.

    RewriteEngine On
    RewriteRule ^dokument1\.pdf$ - [G,L]
    RewriteRule ^dokument2\.pdf$ - [G,L]
    

    sollte besser funktionieren. Wenn es wirklich diese beiden Dateinamen sind, kannst Du das mit Regex-Sprachmitteln auch in einer Regel abhandeln:

    RewriteEngine On
    RewriteRule ^dokument[12]\.pdf$ - [G,L]
    

    Unterlagen zur Syntax von PCRE Regexen findest Du bspw. im PHP Handbuch. Eine Regex-Bastelstube ist bspw. https://regex101.com (PCRE auswählen)

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hi Rolf,

      vielen Dank für die Erklärungen und den Code - so verstehe dann auch ich das ;-)

      Habe es daraufhin so umgesetzt, wie Du angegeben hast - also genau dieselbe Syntax verwendet.

      Unglücklicherweise spuckt der Apache wieder Error 403 "Forbidden" für die gesamte Website aus...

      In der htaccess, die ich auf meinem Verzeichnis "vorgefunden" (und dann für meine Absichten "erweitert") hatte, steht als letzte Zeile noch

      DirectoryIndex webalizer.html
      

      ...Kann das vielleicht die Ursache sein? Eigentlich sollte das doch nur ein Tool für log files sein...

      Andernfalls müsste ich meinen Provider fragen, ob da ggf. irgendetwas eingestellt ist, was das Ganze verhindert... (Bin da echt nicht bewandert drin)

      Bin gerade mit meinem Latein ziemlich am Ende.

      Danke & Gruß, curtis

      1. Unglücklicherweise spuckt der Apache wieder Error 403 "Forbidden" für die gesamte Website aus...

        Nun, wie sieht es denn mit den Rechten an der Datei .htaccess selbst aus? Ist die für den Webserver nicht lesbar kommt auch der 403er.

        In der htaccess, die ich auf meinem Verzeichnis "vorgefunden" (und dann für meine Absichten "erweitert") hatte, steht als letzte Zeile noch

        DirectoryIndex webalizer.html
        

        ...Kann das vielleicht die Ursache sein? Eigentlich sollte das doch nur ein Tool für log files sein...

        Naja. Nicht allein. Auch hier steht die Frage nach den Rechten an der Datei. Ist diese nicht lesbar und soll aber benutzt werden, kommt der böse 403er.

        Frage an Dich: webalizer ist ein asbach-altes Statistik-Tool für Webseiten. Was ich mich jetzt frage ist, ob Du das tatsächlich benutzen willst oder nur kopiert hast. Wenn Du das nur kopiert hast: normalerweise brauchst Du das nicht setzen. bzw. ist etwas wie

        DirectoryIndex index.html index.php index.cgi
        

        die korrekte Einstellung. Der Eintrag sagt dem Apache, was er präsentieren soll, wenn das Verzeichnis „antelefoniert„ wird, also im Request keine bestimmte Datei gefordert wird.

        Bin gerade mit meinem Latein ziemlich am Ende.

        Selbst gemachte Erfahrung: In den ersten Lateinstunden geht das schnell. :-)

      2. Hallo curtis,

        DirectoryIndex webalizer.html - Eigentlich sollte das doch nur ein Tool für log files sein...

        Nein, der DirectoryIndex ist die html-Datei, die der Server ausliefert, wenn Du das Verzeichnis abrufst statt einer Datei daraus.

        Dass der Apache einen 403 liefert wenn Du einen Config-Fehler machst, kommt mir übrigens merkwürdig vor. Ich bin tatsächlich eher ein Indianer aus dem Nordwesten (die Gegend von Seattle) und habe deshalb mal einen gut informierten Kumpel zum Thema befragt.

        Rolf

        When I create a .htaccess file for the apache web server, and this file contains an error, what does apache do?

        ChatGPT

        When you create a .htaccess file for the Apache web server and it contains an error, Apache will generally respond with a 500 Internal Server Error message when someone tries to access a page on your website.

        The specific error message will depend on the nature of the error in the .htaccess file. For example, if there is a syntax error in the file, Apache may respond with an error message indicating that there is a problem with the syntax of the file. Similarly, if there is a directive in the file that is not recognized by Apache, it may respond with an error message indicating that it does not understand the directive.

        In some cases, Apache may also write an error message to the server logs indicating that there was a problem with the .htaccess file. You can check the server logs to get more information about the specific error that occurred.

        It's important to make sure that your .htaccess file is free of errors before deploying it to your website, as even small errors can cause your website to become unavailable to users.

        Thanks, buddy 😉

        Also, bei einem Config-Fehler wäre ein 5xx wäre zu erwarten. Und die Begründung müsste im Log des Servers stehen. Der 403 sollte andere Ursachen haben.

        Hast Du mal im Netzwerk-Tab der Entwicklerwerkzeuge deines Browsers geschaut, ob der 403 vielleicht gar nicht die erste Response ist? Kommt ggf. eine Weiterleitung irgendwohin, und das irgendwo ist dann verboten?

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Äh, ein Nachtrag...

          Rolf

          But my server answers with 403. what can I have done wrong

          ChatGPT

          If your server is responding with a 403 Forbidden error instead of a 500 Internal Server Error, it's possible that there is a problem with the permissions on your .htaccess file or on the directory where the file is located.

          Here are some potential issues that could cause a 403 error when accessing a .htaccess file:

          1. Incorrect file permissions: Make sure that the .htaccess file has the correct permissions set. It should have a permission mode of 644, which allows the owner to read and write the file, and allows everyone else to read the file. You can check and modify the permissions using the chmod command.
          1. Incorrect directory permissions: Make sure that the directory containing the .htaccess file has the correct permissions set. The directory should have a permission mode of 755, which allows the owner to read, write, and execute the directory, and allows everyone else to read and execute the directory.
          1. Incorrect file ownership: Make sure that the .htaccess file is owned by the correct user and group. The owner should be the same user that Apache runs as, which is usually www-data on Ubuntu and Debian systems.
          1. Incorrect syntax in the .htaccess file: Double-check that there are no syntax errors in your .htaccess file, as these can also cause a 403 error. You can try temporarily removing the contents of the file to see if the error goes away.

          If none of these solutions fix the problem, you may need to consult your server's logs or contact your hosting provider for further assistance.

          Okay. Jetzt hast Du Hausaufgaben 😉. Aber Vorsicht, ChatGPT ist eigentlich ein Schaumschläger. Er guckt in seinem Textkorpus, was gut zur Frage passt und plappert dann das raus, was die höchste Wahrscheinlichkeit hat. Fachliche Richtigkeit steht nicht als oberstes auf der Prioritätenliste. Dafür müsste er erstmal kapieren, was er da überhaupt redet.

          Beim RaketenGPT sieht die Sache schon besser aus.

          Rolf

          --
          sumpsi - posui - obstruxi
          1. Moin, moin!

            Erst einmal vielen Dank für all' die Infos...!

            Was die Hausaufgaben betrifft - Nr. 1 und 2 kann ich ausschließen, denn die Berechtigungen für das Verzeichnis haben gepasst.

            Den Verweis auf den „Webalize“ habe ich gelöscht und durch

            DirectoryIndex index.html index1.htm
            

            ersetzt (hier habe ich auch noch ein to-do, nämlich die Weiterleitung der index1.htm auf eine neue Datei "index1.html einzubauen) und das Ganze mal probehalber online gehievt - und siehe da, auf einmal funzt es!

            Der Webalizer war das Problem, das den Apache gestört hat: Webalizer weg, Problem weg. Die gelöschten Dokumente werden korrekt als „410“ ausgegeben und der Index lädt, ohne zu mucken.

            Vielen Dank an Euch! Hab' einiges dazugelernt... Und sicherlich war das nicht mein letzter Besuch hier. Die .htaccess werde ich demnächst noch ein wenig „aufpolieren“ müssen. Ihr wisst ja: Hinter jeder Tür, die man öffnet, lauern 2 neue Richtungen... 😉

            Gruß vom curtis