Dies funktioniert über einen sogenannten Anker:
Der Link:
<A HREF="#blablub">siehe weiter unten bla blub</A>
Die Stelle, wo ich hinspringen will:
<A NAME="blablub">bla blub</A>
Will ich diese Stelle aus einem anderen Dokument referenzieren
funktioniert dies so:
<A HREF="http://www.mickisaft.to/path/file.html#blablub">weitere Infos zu bla blub</A>
Zunächst die Theorie:
Als Antwort auf einen Request sendet der Server ein Dokument, das
zunächst einen Header enthält, der -wie bei Mail und News- durch eine
Leerzeile vom Dokument getrennt ist.
Der Minimal-Header enthält mindestens zwei Zeilen, die normalerweise
HTTP/1.0 200 OK
Content-Type: text/html
lauten. Danach eine Leerzeile und alles weitere wird als HTML-Dokument
interpretiert. (mit text/plain kann man z.B ein ASCII-Text ankündigen)
Wenn jetzt der Header aber Location: http://neue.do.main/bla/fasel.html
heißt, dann erwatet der Client (Browser) kein Dokument, sondern holt
eben das Dokument mit der angegebenen URL.
Und nun die Praxis:
Das kann man entweder realisieren, indem man als Output eines CGI-Scripts
(Bei denen muß man den Header immer vom Script schreiben lassen, der
Server produziert ihn nicht automatisch)
Location: ...
<Leerzeile>
ausgibt (wird wahrscheinlich bei home.pages.de so gemacht) oder indem man
im Server-Setup beim Mapping der URLs auf das Filesystem nicht auf
files, sondern auf URLs abbildet (Ist z.B. sinnvoll, wenn ein Server
komplett seinen Host wechselt und der 'dummy-Server' auf dem alten Host
nicht stört, bis es alle gelernt haben). Letzteres ist vielleicht nicht
bei allen Servern möglich, und insbesondere die Syntax ist natürlich
serverabhängig.
Um dies zu bewerkstelligen, benötigt man allerdings Zugriff auf die
Serverkonfiguration bzw. muß den Webmaster bitten, das Mapping
einzurichten.
Manche Server bieten noch folgende Möglichkeit im <HEAD> der Seite an:
<META HTTP-EQUIV="Location" CONTENT="http://neue.do.main.de/bla/">
Diese URL muß dabei absolut angegeben werden. Leider funktioniert das nicht bei jedem Server/Browser. Von dieser Möglichkeit der Realisierung sollte deshalb besser abgesehen werden.
Generell wird bei Servern zwischen Mapping bzw. Map und Redirect
unterschieden. Also z.B.
Map /physical-dir/dir/file.html /physical-dir/other-dir/file.html
Redirect /server-URL/path/file.html http://host/server-URL/path/file.html
Einige Server (z.B. NCSA > 1.5) unterstützen auch 'User-editierbare
Redirects' (beim NCSA kann diese jeder User in der Datei ".htaccess"
in seinem Verzeichnis anlegen).
Durch Redirects lassen sich _keine_ Loops erzeugen. Laut HTTP-Spezifikationen
darf ein Browser nicht mehr als 5 Redirects (ohne
User-Interaktion) durchführen/bearbeiten.
Wird beispielsweise http://server/user aufgerufen, gibt der Server beispielsweise ein "HTTP/1.1 301 Moved Permanently" als Weiterleitung nach http://server/user/ aus, falls es sich dabei um ein Verzeichniss handelt. Die korrekte URL ist bei Verzeichnissen also mit / am Ende. Bei URLs ohne Verzeichnissen ist kein / notwendig.
Wird in http://www.mintert.com/javascript/de.comp.lang.javascript.html erklärt.
Ja, die Sache hat einen kleinen(?) Nachteil: Viele Browser zeigen bereits besuchte Links ("visited links") in einer anderen Farbe an. Der Benutzer kann dann sehen, ob er dem Link schon gefolgt ist. Hilfreich ist das vor allem dann, wenn es mehrere Links auf das gleiche Dokument gibt, die aber aus Benutzersicht unterschiedlich heißen. Auch wenn man Inhalte nochmal offline anschauen möchte, kann man an der Farbe sehen, was (wahrscheinlich) noch im Browser-Cache ist. Wenn die Grafik keinen Rand hat, kann man diese kleinen Hilfen leider nicht nutzen.
Fast jeder Server kann eine Default-Datei liefern, wenn die
URL, die von ihm angefordert wird, ein Verzeichnis ist. Meistens heißt
diese Default-Datei index.html. Leider kann der Browser nicht wissen,
daß z.B. http://foo.de/ und http://foo.de/index.html die gleiche Datei
ist. Deshalb werden Links auf http://foo.de/ als nicht-visited
dargestellt, wenn man vorher nur über http://foo.de/index.html auf der
Seite war. Konsequenz für den Autor sollte sein, alle Links gleich zu
gestalten. Ob mit oder ohne "index.html" (o.ä.) in der URL ist
weitgehend egal. Aber: Mit "index.html" funktionieren relative Links
auch lokal, also ohne einen Server. Andererseits wählen User wohl
lieber das Verzeichnis an, wenn sie so ein paar Buchstaben weniger
tippen müssen.
Ein anderer Grund dafür, daß Links nicht als bereits besucht
markiert werden, liegt daran, daß möglicherweise der Link
über ein cgi-bin oder über JavaScript realisiert wird, sodaß
Browser diese nie als bereits besucht markieren.
Das geht nur wenn .htaccess Files vom Webserver berücksichtigt werden. Dort sollte dann eine Zeile mit "ErrorDocument 404 http://myhost.mydom/myerr.html" stehen.
Ansatzweise wir oft empfohlen, die Extension des Files zu ändern. Da der Browser aber auf den Mimetype des Files und nicht auf die Extension refernzieren sollte, ist diese Vorgehensweise nicht empfehlenswert. Am sinnvollsten ist es das File gezippt abzulegen. Dabei sollte man bei der Wahl des Zippers auf die Zielgruppe der Personen achten, die das File potentiell herunterladen.