Joachim: 2 Varianten in der href-Angabe

Hallo,
wenn auf der Seite http://test.test/Adressen.html die Angaben stehen

<a href="/Rathaus.html">Rathaus</a>
und <a href="http://test.test/Rathaus.html">Rathaus</a>
Welche davon ist besser?
Wo liegt der Unterschied?
Gruß
Joachim

  1. Servus!

    Hallo,
    wenn auf der Seite http://test.test/Adressen.html die Angaben stehen

    <a href="/Rathaus.html">Rathaus</a>
    und <a href="http://test.test/Rathaus.html">Rathaus</a>
    Welche davon ist besser?
    Wo liegt der Unterschied?

    Im Wiki: Referenzieren_in_HTML#Mit_absoluten_Pfadangaben_relativ_zum_Basis-URI_referenzieren

    Herzliche Grüße

    Matthias Scharwies

    --
    "I don’t make typos. I make new words."
    1. Hallo, dass beide Varianten möglich sind war mir bekannt. Ist aber eine der Varianten vorzuziehen? In meiner Unwissenheit könnte ich mir vorstellen, dass die .htaccess im ersten Fall nicht ausgewertet wird aber im zweiten Falle doch.

      1. Moin,

        In meiner Unwissenheit könnte ich mir vorstellen, dass die .htaccess im ersten Fall nicht ausgewertet wird aber im zweiten Falle doch.

        Wenn die Ressource im ersten Fall über das Dateisystem geht, dann wäre dem so. Wenn in beiden Fällen der Webserver kontaktiert wird und es ein Apache ist, der .htaccess in diesem Verzeichnis erlaubt, wird auch diese Datei in beiden Fällen berücksichtigt.

        Viele Grüße
        Robert

        1. Also beide Varianten völlig gleichwertig?

          1. Hello,

            Also beide Varianten völlig gleichwertig?

            Nein.
            Die Variante mit der vollständigen URL (inclusive Scheme) macht Probleme beim Umziehen der Domain und beim Redirecting auf https.

            Die relative Angabe, bezogen auf die Document Root (also mit führendem Slash) ist die problemloseste, wenn man immer mit einem Webserver arbeiten kann.

            Glück Auf
            Tom vom Berg

            --
            Es gibt nichts Gutes, außer man tut es!
            Das Leben selbst ist der Sinn.
  2. Hallo,

    wenn auf der Seite http://test.test/Adressen.html die Angaben stehen

    <a href="/Rathaus.html">Rathaus</a>
    und <a href="http://test.test/Rathaus.html">Rathaus</a>

    Das referenziert 2 verschiedene Ressourcen. Es wären dieselben wenn es so notiert wird (vorausgesetzt, das Protokoll ist dasselbe):

     <a href="/test.test/Rathaus.html">Rathaus</a>  
     <a href="http://test.test/Rathaus.html">Rathaus</a>  
    

    Wo liegt der Unterschied?

    Der dürfte jetzt gut zu sehen sein.

    Welche davon ist besser?

    Das wäre zu überlegen: Mit ein bischen mehr Input über das was Du vorhast.

    MfG

    1. Wie bitte? test.test ist kein Verzeichnis.

      1. test.test als authority einzusetzen ist ja auch unsinnig.

        Ein URL sieht so aus:

        scheme | authority | path | query | fragment http:// | example.com | /index.html | ?x=y | #id

        Und wenn in Deiner Verlinkung die ersten beiden Teile immer gleich sind, kannst Du die auch weglassen.

        MfG

        1. @@Ursa Major

          test.test als authority einzusetzen ist ja auch unsinnig.

          Die Aussage ist unsinnig.

          Ein URL sieht so aus:

          scheme | authority | path | query | fragment http:// | example.com | /index.html | ?x=y | #id

          Oder auch so:

          scheme | authority | path | query | fragment http:// | test.test | /index.html | ?x=y | #id

          LLAP 🖖

          --
          „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
            1. @@Ursa Major

              Guck mal hier

              *gähn*

              Guck mal da

              LLAP 🖖

              --
              „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
    2. Moin,

       <a href="/test.test/Rathaus.html">Rathaus</a>  
       <a href="http://test.test/Rathaus.html">Rathaus</a>  
      

      im ersten Fall fehlt noch ein Slash. So wie es hier steht, hat Joachim Recht mit seinem Hinweis, dass test.test kein Verzeichnis ist. Die Angabe

      <a href="//test.test/Rathaus.html">Rathaus</a>
      

      ist protokoll-relativ.

      Viele Grüße
      Robert

      1. test.test als authority einzusetzen ist ja auch unsinnig.

        MfG

        1. Moin,

          was soll mir das sagen?

          test.test als authority einzusetzen ist ja auch unsinnig.

          Von welcher „authority“ sprichst du?

          Viele Grüße
          Robert

          1. Authority

            Steht auch so in https://de.wikipedia.org/wiki/Uniform_Resource_Identifier

            1. Moin,

              Danke, wieder was gelernt.

              Fürs Protokoll noch den RFC: https://tools.ietf.org/html/rfc3986#section-3

              Viele Grüße
              Robert

    3. Tach!

      <a href="/Rathaus.html">Rathaus</a>
      und
      <a href="http://test.test/Rathaus.html">Rathaus</a>

      Das referenziert 2 verschiedene Ressourcen. Es wären dieselben wenn es so notiert wird (vorausgesetzt, das Protokoll ist dasselbe):

       <a href="/test.test/Rathaus.html">Rathaus</a>  
       <a href="http://test.test/Rathaus.html">Rathaus</a>  
      

      Wolltest du die Adresse in der ersten Zeile mit // beginnen? Wenn ja, dann würde die Aussage teilweise stimmen. Denn wenn man die Voraussetzung auf Protokoll und Servernamen ausdehnt, wäre es auch dieselbe Ressource.

      dedlfix.

  3. Moin,

    wenn auf der Seite http://test.test/Adressen.html

    vorab: Für beispielhafte Hostnamen gibt es Beispieldomains.

    die Angaben stehen

    <a href="/Rathaus.html">Rathaus</a>
    

    und

    <a href="http://test.test/Rathaus.html">Rathaus</a>
    

    Da „fehlen“ noch

    <a href="Rathaus.html">Rathaus</a>
    <a href="./Rathaus.html">Rathaus</a>
    

    Welche davon ist besser?
    Wo liegt der Unterschied?

    Das kommt darauf an, ob es noch weitere Usecases gibt:

    • Wenn du die Seite z.B. offline und ohne Webserver testen möchtest oder falls die Inhalte in ein anderes Verzeichnis umziehen, dann kann es sinnvoll sein eine der von mir gezeigten relativen Pfadangaben zu verwenden.
    • Wenn die Adressen.html per Rewrite oder anders auch unter einem anderen Pfad erreichbar sein kann, ist der erste Vorschlag sinnvoll.
    • Die zweite Variante mit der Protokollangabe ist zu verwenden, wenn du explizit das Protokoll spezifizieren möchtest.

    Ich nutze meist relative Pfadangaben, weil das beim Testen weniger Probleme macht und Zeichen spart 😉

    Viele Grüße
    Robert

    1. @@Robert B.

      wenn auf der Seite http://test.test/Adressen.html

      vorab: Für beispielhafte Hostnamen gibt es Beispieldomains.

      Würdest du nicht Sekundärliteratur heranziehen, sondern die richtige™ Quelle BCP 32 (welche auf fraglicher Seite gar nicht erwähnt wird), wüsstest du, dass test. eine solche Beispieldomain ist.

      LLAP 🖖

      --
      „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
      1. Hallo Gunnar,

        Würdest du nicht Sekundärliteratur heranziehen, sondern die richtige™ Quelle BCP 32 (welche auf fraglicher Seite gar nicht erwähnt wird), wüsstest du, dass test. eine solche Beispieldomain ist.

        Müsste der Punkt nicht auf die andere Seite, also .test? So steht es jedenfalls in dem von dir verlinkten Dokument.

        Viele Grüße
        Robert

        1. @@Robert B.

          Müsste der Punkt nicht auf die andere Seite, also .test? So steht es jedenfalls in dem von dir verlinkten Dokument.

          Nein und ja. Die Domain ist test., Webadressen zu Ressourcen dieser Domain enden auf .test.

          LLAP 🖖

          --
          „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
      2. @all: Bitte vergesst den Beitrag von ursa major. Meine beiden href-Angaben waren korrekt (wenn man davon absieht, dass ich vielleicht statt test.test eine example-Domain hätte angeben müssen - allerdings steht unter dem angegebenen Link, dass auch .test als example-Domain zulässig ist). Zurück zum meiner Frage: Sind beide href-Angaben als gleichwertig anzusehen?

        1. @all: Bitte vergesst den Beitrag von ursa major.

          Ach was 😉

          Zurück zum meiner Frage: Sind beide href-Angaben als gleichwertig anzusehen?

          Na dann überlege doch mal selbst. Hier ein kleiner Hinweis.

        2. Tach!

          Zurück zum meiner Frage: Sind beide href-Angaben als gleichwertig anzusehen?

          Wenn du die Sache mit dem test.test ignorierst, steht die Antwort bereits da.

          dedlfix.

      3. @@Gunnar Bittersmann

        Würdest du nicht Sekundärliteratur heranziehen, sondern die richtige™ Quelle BCP 32 (welche auf fraglicher Seite gar nicht erwähnt wird), wüsstest du, dass test. eine solche Beispieldomain ist.

        Fraglich Seite erwähnt allerdings auch .test.

        Und natürlich auch RFC 2606, auf den BCP 32 momentan zeigt. Momentan; sollte RFC 2606 mal obsolet werden, wird BCP 32 auf seinen Nachfolger zeigen und somit alle Links dorthin weiterhin auf die aktuelle Ressource. Meist ist es deshalb besser, auf BCPs zu verweisen anstatt auf die dahinterliegenden RFCs.

        LLAP 🖖

        --
        „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
  4. Hallo Joachim,

    die URL "http://example.org/Rathaus.html" bietet dem Browser 4 Informationen:

    • verwende das URI-Schema und Protokoll http
    • die IP Adresse des Servers ist im DNS unter dem Namen example.org registriert
    • Der Pfad zur Ressource ist /
    • die Ressource heißt Rathaus.html

    Wenn von diesen Informationen eine fehlt, ergänzt sie der Server basierend auf der URL der Ressource, in der die URL sich befindet. Im Falle eines Links: Die URL der HTML-Seite, auf der der Link steht.

    D.h. ein href="/Rathaus.html" enthält nur 2 der 4 Informationen aus der vollen URL, und wenn der Link auf http://example.org/sitemap.html stünde, würde der Server http:// und example.org ergänzen.

    Die verkürzte Version ist besser, wenn es um Site-interne Links geht. Wenn Du nämlich innerhalb einer Website alle Links mit vollqualifizierten URLs baust, tust Du Dich bei einem Umzug von example.org nach example.com sehr schwer, weil Du dann alle Links ändern musst.

    D.h. bei internen Links ist die kurze Version richtig. Die lange Version ist die einzig richtige, wenn Links aus der Seite hinausführen.

    Diskutabel ist noch, ob href="/Rathaus.html" oder href="Rathaus.html" besser ist, ob also die Ressource mit absolutem oder relativem Pfad zu holen ist.

    Beispiel: Wenn auf einer Seite http://example.org/Ordnungsamt/Verkehr/index.html ein Link auf die Rathaus-Seite steht, dann kann man das mit href="../../Rathaus.html" tun oder mit href="/Rathaus.html" tun. Die Schreibweise mit ../../ geht zwei Ebenen in der Ordnerstruktur hoch und sucht dort Rathaus.html. Die Schreibweise mit / geht gleich zur Wurzel des Baumes.

    Ersteres hat Vorteile, wenn man von http://example.org nach http://example.de/BadUnbekannt umzieht, d.h. das bisherige Web Root auf einmal kein Root mehr ist. Es hat aber Nachteile, wenn das Ordnungsamt auf einmal seine Pfadstruktur ändert und aus /Ordnungsamt/Verkehr auf einmal /Sicherheit/Ordnungsamt/Verkehr wird. Dann stimmt ../../ nicht mehr.

    Die Antwort auf die Frage "absoluter oder relativer Pfad" ist also nur mit einem klaren "Kommt drauf an" beantwortbar. Welchen Tod stirbst Du lieber?

    Rolf

    --
    sumpsi - posui - clusi
    1. Tach!

      Die verkürzte Version ist besser, wenn es um Site-interne Links geht. Wenn Du nämlich innerhalb einer Website alle Links mit vollqualifizierten URLs baust, tust Du Dich bei einem Umzug von example.org nach example.com sehr schwer, weil Du dann alle Links ändern musst.

      Nicht nur da, auch wenn Verschlüsslung einführen möchte, und sich deswegen das Protokoll von http auf https ändert, hat man dasselbe Problem.

      dedlfix.

    2. hallo

      Diskutabel ist noch, ob href="/Rathaus.html" oder href="Rathaus.html" besser ist, ob also die Ressource mit absolutem oder relativem Pfad zu holen ist.

      Solange Referentar und Referenz im gleichen Ordner liegen, sollte immer auf absolute Pfade verzichtet werden, da die Chance > 99% ist, dass diese Dateien gemeinsam umziehen.

      1. Hallo beatovich,

        da hast Du zweifellos recht.

        Die spannendere Frage ist, wie man mit benachbarten Ordnern umgeht. Ein Beispiel hatte ich mit dem Ordnungsamt gemacht. Eher absolut, eher relativ, oder eine Webroot-Angabe per SSI oder PHP injizieren?

        Rolf

        --
        sumpsi - posui - clusi
        1. hallo

          Hallo beatovich,

          da hast Du zweifellos recht.

          Die spannendere Frage ist, wie man mit benachbarten Ordnern umgeht. Ein Beispiel hatte ich mit dem Ordnungsamt gemacht. Eher absolut, eher relativ, oder eine Webroot-Angabe per SSI oder PHP injizieren?

          Wenn ein Teil deiner Ordner sich umstrukturiert hast du in jedem Fall ein Problem, das sich zwecks Erhaltung aller öffentlichen Referenzen nur mit htaccess redirect lösen lässt.

    3. Hi,

      die URL "http://example.org/Rathaus.html" bietet dem Browser 4 Informationen:

      • verwende das URI-Schema und Protokoll http
      • die IP Adresse des Servers ist im DNS unter dem Namen example.org registriert
      • Der Pfad zur Ressource ist /
      • die Ressource heißt Rathaus.html

      Wenn von diesen Informationen eine fehlt, ergänzt sie der Server basierend auf der URL der Ressource, in der die URL sich befindet.

      m.E. ist es der Client - der muß ja die Ergänzung vornehmen, sonst wüßte er gar nicht, welchen Server er kontaktieren muß.

      Außerdem: Beispiel: in "http://example.org/Rathaus.html" befindet sich eine URL "http://example.org/". Hier fehlt eine der 4 Informationen (nämlich die letzte).

      Laut Deiner Aussage würde das ergänzt zu "http://example.org/Rathaus.html".

      Eher nicht - sonst gäb's keine "Home"-Links …

      cu,
      Andreas a/k/a MudGuard

      1. Hallo MudGuard,

        ergänzt sie der Server

        m.E. ist es der Client

        Natürlich. Sorry für den Lapsus.

        Mit der Ergänzerei hast Du natürlich auch recht. Es wird nur das ergänzt, was nach links hin fehlt. Gebe ich ein Schema an, fehlt nichts. Gebe ich den Host an, wird das Schema ergänzt. Gebe ich den Pfad an, wird Schema und Host ergänzt. Gebe ich die Ressource an, wird Schema, Host und Pfad ergänzt. Hat der Pfad kein / vorneweg, wird relativ zum aktuellen Pfad navigiert.

        Rolf

        --
        sumpsi - posui - clusi
  5. hallo

    Hallo,
    wenn auf der Seite http://test.test/Adressen.html die Angaben stehen

    <a href="/Rathaus.html">Rathaus</a>
    und <a href="http://test.test/Rathaus.html">Rathaus</a>
    Welche davon ist besser?

    die dritte

    <a href="Rathaus.html">Rathaus</a>

    1. hallo

      Hallo,
      wenn auf der Seite http://test.test/Adressen.html die Angaben stehen

      <a href="/Rathaus.html">Rathaus</a>
      und <a href="http://test.test/Rathaus.html">Rathaus</a>
      Welche davon ist besser?

      die dritte

      <a href="Rathaus.html">Rathaus</a>

      Das wäre eine relative Pfadangabe. Die beiden Gezeigten jedoch sind absolut!

      MfG

      1. Hallo Frau Bärin,

        die Frage, ob relative URLs nicht sinnvoller sind, ist berechtigt. Die Antwort ist aber nicht so leicht - siehe meinen anderen Beitrag.

        Rolf

        --
        sumpsi - posui - clusi
        1. @Rolf B

          die Frage, ob relative URLs nicht sinnvoller sind, ist berechtigt.

          Relative Pfade in href finde ich generell nicht sinnvoll.

          Die Antwort ist aber nicht so leicht - siehe meinen anderen Beitrag.

          Aus meiner Erfahrung heraus ist die Antwort ganz einfach: Notiere nur die Pfadangabe ohne Schema und ohne Authority.

          MfG

          1. Moin,

            Relative Pfade in href finde ich generell nicht sinnvoll.

            das kommt darauf an.

            Viele Grüße
            Robert

        2. hallo

          Hallo Frau Bärin,

          die Frage, ob relative URLs nicht sinnvoller sind, ist berechtigt. Die Antwort ist aber nicht so leicht - siehe meinen anderen Beitrag.

          Sie ist leicht zu beantworten.

          absolute Pfade gehören nur in Konfig-Abschnitte.

          1. absolute Pfade gehören nur in Konfig-Abschnitte.

            Oder anders ausgedrückt: Relative Pfadangaben haben in einer Konfiguration nichts zu suchen.

            MfG

            1. hallo

              absolute Pfade gehören nur in Konfig-Abschnitte.

              Oder anders ausgedrückt: Relative Pfadangaben haben in einer Konfiguration nichts zu suchen.

              Kommt darauf an. Meine zentrale js-Dateien enthalten durchaus relative Pfadangaben. Schliesslich ist jeder Webpaket ähnlich organisiert, aber verschieden geroutet.

              1. hallo

                absolute Pfade gehören nur in Konfig-Abschnitte.

                Oder anders ausgedrückt: Relative Pfadangaben haben in einer Konfiguration nichts zu suchen.

                Kommt darauf an. Meine zentrale js-Dateien enthalten durchaus relative Pfadangaben. Schliesslich ist jeder Webpaket ähnlich organisiert, aber verschieden geroutet.

                Hatten wir hier alles schon. Nur hätt' ich 1997 anders darauf geantwortet. Erfahrungen muss halt jeder selber machen.

                MfG

            2. Liebe/lieber ursa, schweigen ist besser als unbedingt etwas erzählen zu müssen. Wie man oben sieht, kann dies gehörig in die Hose gehen.

              1. Liebe/lieber ursa, schweigen ist besser als unbedingt etwas erzählen zu müssen. Wie man oben sieht, kann dies gehörig in die Hose gehen.

                Mobben macht Spaß nicht wahr!?

                @all: Bitte vergesst den Beitrag von ursa major.

                Klar, Dein Problem vergesse ich auch gerne!

                .