Newbie-Frage zur .htaccess
curtis
- 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
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
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
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. :-)
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.
When I create a .htaccess file for the apache web server, and this file contains an error, what does apache do?
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
Äh, ein Nachtrag...
But my server answers with 403. what can I have done wrong
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:
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
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