Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Komisches Phänomen, wenn in meiner URL */index/* auftaucht

1 view
Skip to first unread message

Peter Schütt

unread,
Dec 21, 2022, 6:45:18 AM12/21/22
to
Hallo,
da ich auf meiner Web-Seite viel mit relativen Pfade und Resourcen aus
übergeordneten Verzeichnissen mache, muss ich immer auf die korrekten
Pfade achten.

Meine Homepage habe ich so strukturiert:
pstt.de/<bereich>/<unterbereich>/

Wenn man nun
pstt.de/<bereich>
aufruft, dann wird man per http-refresh automatisch weiter nach
pstt.de/<bereich>/<willkommen>
geleitet

Beispiel:
https://pstt.de/peprpg/ => https://pstt.de/peprpg/general/

Das funktioniert auch überall, allerdings gibt es das Problem, dass bei
Aufruf von

pstt.de/<bereich>/index/

in eine Endlosschleife läuft

pstt.de/<bereich>/index/<willkommen>/<willkommen>/<willkommen>/...

Beispiel:
https://pstt.de/peprpg/index/general/general/general/general/...

Lokal zum Testen verwende ich Lighttpd, wo ein erwarteter 404
zurückgegeben wird, auf dem Server ist ein apache 2.4, der zwar auch im
Log ein 404 angibt, aber trotzdem diesen Endlospfad aufbaut.

Wenn ich statt /index/ z.B. /hotzenplotz/ schreibe, dann gibt es wie
erwartet einen 404er.

Wenn ich in einem Bereich ein leeres /index/-Verzeichnis angebe, kommt
ein 403er, was ich nicht so ganz verstehe, was aber als Workaround
natürlich möglich wäre.

Kann mir einer dieses Verhalten erklären und vielleicht auch bei der
Lösung helfen, die ich z.B. in der .htaccess eintragen könnte, weil ich
auf die Apache-Server-Konfiguration nur begrenzt Zugriff habe?

Danke für alle Hinweise und Tips.

Ciao
Peter Schütt

Arno Welzel

unread,
Dec 21, 2022, 10:39:43 AM12/21/22
to
Peter Schütt, 2022-12-21 12:45:

> Hallo,
> da ich auf meiner Web-Seite viel mit relativen Pfade und Resourcen aus
> übergeordneten Verzeichnissen mache, muss ich immer auf die korrekten
> Pfade achten.
>
> Meine Homepage habe ich so strukturiert:
> pstt.de/<bereich>/<unterbereich>/
>
> Wenn man nun
> pstt.de/<bereich>
> aufruft, dann wird man per http-refresh automatisch weiter nach
> pstt.de/<bereich>/<willkommen>
> geleitet

Wie wird das konkret erreicht?

[...]
> pstt.de/<bereich>/index/
>
> in eine Endlosschleife läuft
>
> pstt.de/<bereich>/index/<willkommen>/<willkommen>/<willkommen>/...
>
> Beispiel:
> https://pstt.de/peprpg/index/general/general/general/general/...

Ohne die verwendete Weiterleitungsregel, die Du dafür verwendest, ist
nicht zu beantworten.


--
Arno Welzel
https://arnowelzel.de

Peter Schütt

unread,
Dec 22, 2022, 2:46:00 AM12/22/22
to
Hallo,
mit folgendem Header-Eintrag:

<meta http-equiv="refresh" content="0; url=general/">

Ciao
Peter Schütt

Arno Welzel

unread,
Dec 22, 2022, 7:45:00 AM12/22/22
to
Peter Schütt, 2022-12-22 08:45:

[...]
>>> Beispiel:
>>> https://pstt.de/peprpg/index/general/general/general/general/...
>>
>> Ohne die verwendete Weiterleitungsregel, die Du dafür verwendest, ist
>> nicht zu beantworten.
> Hallo,
> mit folgendem Header-Eintrag:
>
> <meta http-equiv="refresh" content="0; url=general/">

Beachte das "/" am Ende beim Aufrufen der ursprünglichen URL!

Variante 1: https://pstt.de/peprpg/index

Das leitet weiter zu <https://pstt.de/peprpg/general/>, keine
Endlosschleife.

ALT: https://pstt.de/peprpg/index
NEU: https://pstt.de/peprpg/general

Variante 2: https://pstt.de/peprpg/index/

Hier gibt es die Endlosschleife:

ALT: https://pstt.de/peprpg/index/
NEU: https://pstt.de/peprpg/index/general

ALT: https://pstt.de/peprpg/index/general
NEU: https://pstt.de/peprpg/index/general/general

ALT: https://pstt.de/peprpg/index/general/general
NEU: https://pstt.de/peprpg/index/general/general/general

usw...

Warum? Weil der Browser den letzten Teil "/index/" nicht mehr mit
"general/" ersetzt, sondern einfach nur "general/" anhängt - es ist ja
eine *relative* URL und keine absolute. Und "relativ" bedeutet, dass die
URL, wenn sie mit "/" endet, den angegebenen Pfad angehängt bekommt.

Weiterhin liefert <https://pstt.de/peprpg/index/general/> keinen
404-Fehler, sondern exakt das selbe Dokument wie ohne "/general/" am Ende:

| $ curl -v -s https://pstt.de/peprpg/index/general/ 1> /dev/null
| * Trying 185.30.32.84:443...
| * Connected to pstt.de (185.30.32.84) port 443 (#0)
| * schannel: disabled automatic use of client certificate
| * ALPN: offers http/1.1
| * ALPN: server accepted http/1.1
| > GET /peprpg/index/general/ HTTP/1.1
| > Host: pstt.de
| > User-Agent: curl/7.83.1
| > Accept: */*
| >
| * Mark bundle as not supporting multiuse
| < HTTP/1.1 200 OK
| < Server: nginx
| < Date: Thu, 22 Dec 2022 12:40:07 GMT
| < Content-Type: text/html; charset=UTF-8
| < Content-Length: 404
| < Connection: keep-alive
| < Vary: Accept-Encoding
| <
| * Connection #0 to host pstt.de left intact

Vermutlich hast Du die "Content-Length: 404" irrtümlich als "Fehler 404"
angesehen, das ist aber nur die Anzahl der zurückgesendeten Bytes für
den Inhalt, die Zufällig 404 Bytes beträgt.

Warum das so ist, kann ich auf Anhieb nicht sagen. Dazu müsste man die
genaue Konfiguration des Webservers (NGINX) kennen.

Eine mögliche Lösung wäre, bei der Weiterleitung einfach die komplette
URL anzugeben:

<meta http-equiv="refresh" content="0; url=/peprpg/general/">

Dann ist es egal, ob man <https://pstt.de/peprpg/index> oder
<https://pstt.de/peprpg/index/> aufruft, da der Browser in jedem Fall
immer den kompletten Pfad "/peprpg/index" oder "/peprpg/index/" durch
"/peprpg/general/" ersetzt und nicht versucht etwas an den Pfad anzuhängen.
0 new messages