Zum Inhalt springen
Thread.htaccess

Es kommt eine 403 anstatt der gewünschten 404 ?!

Kategorie
.htaccess
Antworten
15
Erstellt von: gelöschter Benutzer Datum: 13.05.2015, 13:28 Uhr

Startbeitrag

Originaler Foreninhalt in modernisierter Darstellung.

Zur Kategorie
gelöschter Benutzer
Threadstart · .htaccess 4034 mal gelesen · 13.05.2015, 13:28 Uhr

Hallo Leute,

Mir ist gerade was aufgefallen:

In meiner .htaccess (Strato gehostet) definiere ich meine Fehlerseiten:

ErrorDocument 404 /404.html


Das funktioniert fast gut

Die URL webpodo.de/unfung leitet auf die /404.html um <- gut !


Die URL webpodo.de/unfug/ leitet auf eine 403 (...You don't have permission to access...)<-- nicht gut !



Mir fehlt hier ein Ansatzpunkt bzw. eine erklärung um zu verstehen was ich hier falsch mache und bitte Euch um Rat.

Hier die entsprechenden Rewrite-Einträge der .htaccess

ErrorDocument 404 /404.html
ErrorDocument 401 "Dies ist ein Passwortgeschützter Bereich"

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.webpodo\.de)(:80)? [NC]

RewriteRule ^(.*)$ webpodo.de/$1 [R=301,L]




RewriteCond %{HTTP_USER_AGENT} libwww-perl.*
RewriteRule .* – [F,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.html$ [NC]
RewriteRule ^(.*)$ $1.html [L]





Antworten

10 Beiträge
matthes
Foren Moderator · Evil Genius · Content Halbgott (973 Beiträge) · 13.05.2015, 14:05 Uhr
Antwort

ARTFULART schrieb:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\\.html$ [NC]
RewriteRule ^(.*)$ $1.html [L]


Da der Text der 403 ausgibt, man habe keinen Zugriff auf "blabla/.html" obwohl nur blabla/ angefragt war, würde ich mal sagen, Diese oben zitierte Rewrite-Bedingung greift.
Es ist keine Datei, es ist kein Ordner, es endet nicht auf .html - also wird es auf .html umgeschrieben.
Warum das bei Ordnern greift und bei fehlendem Backslash nicht, sehe ich gerade auf den ersten Blick nicht.


Make Seitenreport great again!
gelöschter Benutzer · 13.05.2015, 15:04 Uhr
Antwort

Hey und Danke Matthes fürs Feedback

ARTFULART schrieb:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\\.html$ [NC]
RewriteRule ^(.*)$ $1.html [L]



Das habe ich mal auskommentiert, dann wird auch sauber bei "...bababa/" auf die 404 verwiesen!

Hilft mir aber noch nicht weiter, weil meine links intern ja keine Dateiendungen haben

matthes
Foren Moderator · Evil Genius · Content Halbgott (973 Beiträge) · 13.05.2015, 15:35 Uhr
Antwort

Dann mach doch etwas in der Art:

RewriteCond %{REQUEST_FILENAME}\\.html -f
RewriteRule (.*) $1.html


Make Seitenreport great again!
gelöschter Benutzer · 13.05.2015, 16:47 Uhr
Antwort

Matthes schrieb:

Dann mach doch etwas in der Art:

RewriteCond %{REQUEST_FILENAME}\\.html -f
RewriteRule (.*) $1.html




Das (oder noch kürzer = RewriteRule ^([^\\.]+)$ $1.html [NC,L] ) hilft mir wieder bei meinen internen Links, aber "...blabla/" bringt wieder eine 403.

Stehe noch auf dem Schlauch

matthes
Foren Moderator · Evil Genius · Content Halbgott (973 Beiträge) · 13.05.2015, 17:04 Uhr
Antwort

ARTFULART schrieb:
RewriteRule ^([^\\.]+)$ $1.html [NC,L] )


Das ist nicht kürzer, das ist eine andere Regel.
Diese Regel besagt, dass eine Anfrage ohne Punkt die Ressource mit .html ausliefern soll. Das trifft auch auf blabla/ zu.

Meine Regel testet, ob es diese Datei als .html gibt und liefert sie dann aus.

Ich nehme an, Deine Links verzichten auf die Dateiendung, die Dateien liegen aber als .html vor (so habe ich es verstanden)?
Dann wäre meine Regel die vernünftigste.

Deine Regel greift auch bei Ordnern und allem ohne Punkt.


Make Seitenreport great again!
gelöschter Benutzer · 13.05.2015, 19:56 Uhr
Antwort

Matthes schrieb:

ARTFULART schrieb:
RewriteRule ^([^\\.]+)$ $1.html [NC,L] )


Das ist nicht kürzer, das ist eine andere Regel.
Diese Regel besagt, dass eine Anfrage ohne Punkt die Ressource mit .html ausliefern soll. Das trifft auch auf blabla/ zu.

Meine Regel testet, ob es diese Datei als .html gibt und liefert sie dann aus.



Ja, meine Webseiten liegen als .html vor, ich verlinke aber ohne Dateiendung.

Bei Deiner Regel passiert das:

# webpodo.de/blablabla.html <-nicht vorhanden, es kommt 404


# webpodo.de/blablabla.html/ <-nicht vorhanden, es kommt 404


# webpodo.de/blablabla <-nicht vorhanden, es kommt 404


# webpodo.de/blablabla/ <-nicht vorhanden, es kommt 403


# webpodo.de/blablabla.gif/ <-nicht vorhanden, es kommt 403



# webpodo.de/werbear <-vorhanden, wird auch angezeigt (werbear.html ist auf dem Server vorhanden)



Bei "meiner" Regel passiert das:

# webpodo.de/blablabla.html <-nicht vorhanden, es kommt 404


# webpodo.de/blablabla.html/ <-nicht vorhanden, es kommt 404


# webpodo.de/blablabla <-nicht vorhanden, es kommt 404


# webpodo.de/blablabla/ <-nicht vorhanden, es kommt 403


# webpodo.de/blablabla.gif/ <-nicht vorhanden, kommt 404



# webpodo.de/werbear <-vorhanden, wird auch angezeigt (werbear.html ist auf dem Server vorhanden)



Ich habe also bei beiden Regel weiterhin das Problem das blablabla/ eine 403 ausgibt. Hier wird wohl dann ein Ordern "erkannt" und daher kommt die 403 ?

Zur. Zeit ist meine Regel aktiv.

BTW: Danke das Du Dich der Sache annimmst

matthes
Foren Moderator · Evil Genius · Content Halbgott (973 Beiträge) · 13.05.2015, 20:56 Uhr
Antwort

Vorab: Nimm die ganzen Links mal wieder raus... Das kann von Google schnell als Spam interpretiert werden.

Poste mal die ganze .htaccess, wie sie jetzt ist ("ganz" im Sinne von "alles, das hierbei eine Rolle spielt", Expires-Anweisungen u.ä. dürfen gerne raus).
Außerdem solltest Du das Error-Log (vllt. LogLevel hochsetzen) und die Serverkonfiguration durchschauen.

Aus dem, was bisher hier steht, geht nicht hervor, weshalb nicht-existente Ordner 403en statt 404en.


Make Seitenreport great again!
gelöschter Benutzer · 15.05.2015, 08:49 Uhr
Antwort

Ich kann den Beitrag nicht mehr editieren, vielleicht kann der Admin das kurz machen ?!


Expires-,Deflate- und Gzip-Anweisungen habe ich rausgenommen:


ErrorDocument 404 /404.html

ErrorDocument 401 "Dies ist ein Passwortgeschützter Bereich"

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.webpodo\\.de)(:80)? [NC]

RewriteRule ^(.*)$ webpodo.de/$1 [R=301,L]



RewriteCond %{HTTP_USER_AGENT} libwww-perl.*
RewriteRule .* – [F,L]

#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_URI} !\\.html$ [NC]
#RewriteRule ^(.*)$ $1.html [L]

#RewriteCond %{REQUEST_FILENAME} !\\.html$
#RewriteRule (.+) $1.html [L]

RewriteRule ^([^\\.]+)$ $1.html [NC,L]

RewriteRule ^css/(.*\\.css) /combine.php?type=css&files=$1
RewriteRule ^javascript/(.*\\.js) /combine.php?type=javascript&files=$1
matthes
Foren Moderator · Evil Genius · Content Halbgott (973 Beiträge) · 15.05.2015, 15:47 Uhr
Antwort

Bei dem Beitrag hast Du wieder einen Link drin... Du müsstest vorsichtiger sein.

Aus der .htaccess geht nicht hervor, wieso es zu dem 403 kommt.

Was hat der Blick in Logs und Server-Config ergeben?


Make Seitenreport great again!
gelöschter Benutzer · 16.05.2015, 13:39 Uhr
Antwort

Bedenke bitte, Google hat ein langes Erinnerungsvermögen an einmal indexierte URLs.

404 bedeutet die angeforderte Ressource wurde nicht gefunden. Mögliche gründe (Serverausfall, ftp upload... usw)

404 kann also noch sehr lange auftauchen, da die gründe für einen 404 sehr unterschiedlich sein können.

Bei 410 die angeforderte Ressource wird nicht länger bereitgestellt sagst DU SELBST, DASS WILL ICH NICHT MEHR HABEN UND DAS SOLL ES NICHT MEHR GEBEN.

Wenn du etwas nicht mehr haben möchtest dann benutze besser 410 anstatt 404.

Das wird dir jetzt zwar nicht für dein 403 Problem helfen, aber für den nächsten Schritt wird es dir helfen..

Sonst kommt nämlich als nächstes die frage: Hilfe meine 404 Seiten verschwinden einfach nicht aus dem index?