Ich möchte die Unterschiede zwischen diesen beiden Arten von URLs kennen: relative URLs (für Bilder, CSS-Dateien, JS-Dateien usw.) und absolute URLs.
Welches ist außerdem besser zu verwenden?
Im Allgemeinen wird die Verwendung relativer URLs als bewährte Methode angesehen, damit Ihre Website nicht an die Basis-URL gebunden ist, unter der sie derzeit bereitgestellt wird. Beispielsweise kann es sowohl auf localhost als auch auf Ihrer Public Domain ohne Änderungen arbeiten.
Soll ich absolute oder relative URLs verwenden?
Wenn mit absoluten URLs URLs gemeint sind, einschließlich Schema (z. B. http / https) und Hostname (z. B. yourdomain.com), tun Sie dies niemals (für lokale Ressourcen), da die Wartung und das Debuggen schrecklich sein wird.
Angenommen, Sie haben überall in Ihrem Code eine absolute URL verwendet
<img src="http://yourdomain.com/images/example.png">
. Was wird nun passieren, wenn Sie gehen:Im ersten Beispiel erhalten Sie Warnungen vor unsicheren Inhalten, die auf der Seite angefordert werden. Weil alle Ihre URLs fest codiert sind, um http (: //yourdomain.com/images/example.png) zu verwenden. Wenn Sie Ihre Seiten über https ausführen, erwartet der Browser, dass alle Ressourcen über https geladen werden, um zu verhindern, dass Informationen verloren gehen.
Wenn Sie Ihre Site im zweiten Beispiel live aus der Testumgebung schalten, bedeutet dies, dass alle Ressourcen weiterhin auf Ihre Testdomäne anstatt auf Ihre Live-Domäne verweisen.
Um Ihre Frage zu beantworten, ob absolute oder relative URLs verwendet werden sollen, verwenden Sie immer relative URLs (für lokale Ressourcen).
Was sind die Unterschiede zwischen den verschiedenen URLs?
Schauen wir uns zunächst die verschiedenen Arten von URLs an, die wir verwenden können:
http://yourdomain.com/images/example.png
//yourdomain.com/images/example.png
/images/example.png
images/example.png
Auf welche Ressourcen versuchen diese URLs auf dem Server zuzugreifen?
In den folgenden Beispielen gehe ich davon aus, dass die Website vom folgenden Speicherort auf dem Server ausgeführt wird
/var/www/mywebsite
.http://yourdomain.com/images/example.png
Die obige (absolute) URL versucht, auf die Ressource zuzugreifen
/var/www/website/images/example.png
. Diese Art von URL sollten Sie immer vermeiden, wenn Sie aus dem oben genannten Grund Ressourcen von Ihrer eigenen Website anfordern. Es hat jedoch seinen Platz. Wenn Sie beispielsweise eine Website habenhttp://yourdomain.com
und eine Ressource von einer externen Domain über http anfordern möchten, sollten Sie diese verwenden. ZBhttps://externalsite.com/path/to/image.png
.//yourdomain.com/images/example.png
Diese URL basiert auf dem aktuell verwendeten Schema und sollte fast immer verwendet werden, wenn externe Ressourcen (Bilder, Javascripts usw.) einbezogen werden.
Diese Art von URL verwendet das aktuelle Schema der Seite, auf der sie sich befindet. Dies bedeutet, dass Sie sich auf der Seite befinden
http://yourdomain.com
und sich auf dieser Seite ein Bild-Tag befindet, in<img src="//yourdomain.com/images/example.png">
das die URL des Bildes aufgelöst wirdhttp://yourdomain.com/images/example.png
.Wenn Sie auf der Seite gewesen wären
http**s**://yourdomain.com
und sich auf dieser Seite ein Bild-Tag befindet, wird<img src="//yourdomain.com/images/example.png">
die URL des Bildes aufgelösthttps://yourdomain.com/images/example.png
.Dies verhindert das Laden von Ressourcen über https, wenn sie nicht benötigt werden, und stellt automatisch sicher, dass die Ressource bei Bedarf über https angefordert wird .
Die obige URL wird auf der Serverseite auf dieselbe Weise aufgelöst wie die vorherige URL:
/images/example.png
Für lokale Ressourcen ist dies die bevorzugte Art, sie zu referenzieren. Dies ist eine relative URL, die auf dem Dokumentstamm (
/var/www/mywebsite
) Ihrer Website basiert . Dies bedeutet , wenn Sie haben<img src="/images/example.png">
es immer lösen zu/var/www/mywebsite/images/example.png
.Wenn Sie sich irgendwann für einen Domainwechsel entscheiden, funktioniert dies weiterhin, da es relativ ist.
images/example.png
Dies ist auch eine relative URL, obwohl sie sich etwas von der vorherigen unterscheidet. Diese URL ist relativ zum aktuellen Pfad. Dies bedeutet, dass es in verschiedene Pfade aufgelöst wird, je nachdem, wo Sie sich auf der Site befinden.
Wenn Sie sich beispielsweise auf der Seite befinden
http://yourdomain.com
und diese verwenden, wird<img src="images/example.png">
sie auf dem Server/var/www/mywebsite/images/example.png
wie erwartet aufgelöst. Wenn Sie sich jedoch auf der Seite befindenhttp://yourdomain.com/some/path
und genau dasselbe Image-Tag verwenden, wird sie plötzlich aufgelöst/var/www/mywebsite/some/path/images/example.png
.Wann was verwenden?
Wenn Sie externe Ressourcen anfordern, möchten Sie höchstwahrscheinlich eine URL relativ zum Schema verwenden (es sei denn, Sie möchten ein anderes Schema erzwingen), und wenn Sie mit lokalen Ressourcen arbeiten, möchten Sie relative URLs basierend auf dem Dokumentstamm verwenden.
Ein Beispieldokument:
Einige (irgendwie) Duplikate
quelle
Siehe hierzu: http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax
Eine absolute URL enthält die Teile vor dem Teil "Pfad" - mit anderen Worten, sie enthält das Schema (das
http
Inhttp://foo/bar/baz
) und den Hostnamen (dasfoo
Inhttp://foo/bar/baz
) (und optional Port, Benutzerinfo und Port).Relative URLs beginnen mit einem Pfad.
Absolute URLs sind absolut: Der Speicherort der Ressource kann nur anhand der URL selbst aufgelöst werden. Eine relative URL ist in gewisser Weise unvollständig: Um sie aufzulösen, benötigen Sie das Schema und den Hostnamen. Diese werden normalerweise aus dem aktuellen Kontext übernommen. Zum Beispiel auf einer Webseite unter
Sie könnten einen Link wie diesen setzen
Im
href
Attribut des Links wird eine relative URL verwendet, und wenn darauf geklickt wird, muss sie aufgelöst werden, um ihr zu folgen. In diesem Fall ist der aktuelle KontextDaher werden das Schema, der Hostname und der führende Pfad von diesen genommen und vorangestellt
pages/page1
, was ergibtWenn der Link gewesen wäre:
(Beachten Sie das
/
Erscheinen am Anfang der URL) Dann wäre es gelöst worden alsweil der führende
/
die Wurzel des Hosts angibt.In einer Webanwendung würde ich empfehlen, relative URLs für alle Ressourcen zu verwenden, die zu Ihrer App gehören. Auf diese Weise funktioniert alles weiter, wenn Sie den Speicherort der Seiten ändern. Alle externen Ressourcen (können Seiten sein, die vollständig außerhalb Ihrer Anwendung liegen, aber auch statische Inhalte, die Sie über ein Netzwerk zur Bereitstellung von Inhalten bereitstellen) sollten immer auf die Verwendung absoluter URLs hingewiesen werden: Wenn Sie dies nicht tun, gibt es einfach keine Möglichkeit, sie zu finden, da sie vorhanden sind befinden sich auf einem anderen Server.
quelle
//example.com/…
,?foobar
und#foobar
sind auch relative URLs und beginnen nicht mit dem URL-Pfad (na gut, denn?foobar
Sie können sagen, dass er mit einem leeren Pfad beginnt ).//example.com/…
URLs vom Typ "relativ" genannt? das ist neu für michAngenommen, wir erstellen eine Unterwebsite, deren Dateien sich im Ordner http://site.ru/shop befinden .
1. Absolute URL
2. Relative URL
Die relative URL sieht zwar kürzer aus als die absolute, aber die absoluten URLs sind vorzuziehen, da ein Link auf jeder Seite der Website unverändert verwendet werden kann.
Zwischenfälle
Wir haben zwei Extremfälle betrachtet: "absolut" absolute und "absolut" relative URLs. Aber alles ist relativ in dieser Welt. Dies gilt auch für URLs. Jedes Mal, wenn Sie über die absolute URL sprechen, sollten Sie immer relativ zu was angeben.
3. Protokollbezogene URL
Google empfiehlt eine solche URL. Nun wird jedoch allgemein angenommen, dass http: // und https: // unterschiedliche Sites sind.
4. Root-relative URL
Dh relativ zum Stammordner der Domain.
Es ist eine gute Wahl, wenn sich alle Seiten innerhalb derselben Domain befinden. Wenn Sie Ihre Site in eine andere Domain verschieben, müssen Sie den Domainnamen in den URLs nicht massenhaft ersetzen.
5. Basisbezogene URL (Homepage-relativ)
Das Tag <Basis> gibt die Basis-URL an, die automatisch allen relativen Links und Ankern hinzugefügt wird. Das Basis-Tag wirkt sich nicht auf absolute Links aus. Als Basis-URL geben wir die Homepage an: <base href = "http://sites.ru/shop/">.
Jetzt können Sie Ihre Site nicht nur in eine beliebige Domain, sondern in einen beliebigen Unterordner verschieben. Denken Sie daran, dass URLs zwar relativ aussehen, aber tatsächlich absolut sind. Achten Sie besonders auf Anker. Um innerhalb der aktuellen Seite zu navigieren, müssen wir href = "T-Shirts / T-Shirt-Leben-ist-gut / # Kommentare" nicht href = "# Kommentare" schreiben. Letzteres wird auf der Homepage geworfen.
Fazit
Für interne Links verwende ich basenbezogene URLs (5). Für externe Links und Newsletter verwende ich absolute URLs (1).
quelle
Es gibt wirklich drei Typen, die explizit diskutiert werden sollten. In der Praxis wurden URLs zwar abstrahiert, um auf einer niedrigeren Ebene behandelt zu werden, und ich würde sogar sagen, dass Entwickler ihr ganzes Leben lang durchlaufen könnten, ohne eine einzige URL von Hand zu schreiben.
Absolut
Absolute URLs binden Ihren Code an das Protokoll und die Domain. Dies kann mit dynamischen URLs überwunden werden.
Absolute Vorteile:
Steuerung - Die Subdomain und das Protokoll können gesteuert werden. Personen, die durch eine dunkle Subdomain eintreten, werden in die richtige Subdomain geleitet. Sie können je nach Bedarf zwischen sicher und nicht sicher hin und her springen.
Konfigurierbar - Entwickler lieben es, wenn Dinge absolut sind. Sie können ordentliche Algorithmen entwerfen, wenn Sie absolute URLs verwenden. URLs können konfigurierbar gemacht werden, sodass eine URL mit einer einzigen Änderung in einer einzigen Konfigurationsdatei standortweit aktualisiert werden kann.
Hellsehen - Sie können nach Personen suchen, die Ihre Website durchsuchen, oder zusätzliche externe Links abrufen.
Wurzelverwandter
Relative Root-URLs binden Ihren Code an die Basis-URL. Dies kann mit dynamischen URLs und / oder Basis-Tags überwunden werden .
Root Relative Pros:
Relativ
Relative URLs binden Ihren Code an die Verzeichnisstruktur. Es gibt keine Möglichkeit, dies zu überwinden. Relative URLs sind nur in Dateisystemen zum Durchlaufen von Verzeichnissen oder als Verknüpfung für eine einfache Aufgabe nützlich.
Relative Nachteile:
Verwirrend - Wie viele Punkte ist das? Wie viele Ordner ist das? Wo ist die Datei? Warum funktioniert es nicht?
WARTUNG - Wenn eine Datei versehentlich verschoben wird, werden Ressourcen nicht mehr geladen, Links senden den Benutzer auf die falschen Seiten, Formulardaten werden möglicherweise auf die falsche Seite gesendet. Wenn eine Datei verschoben werden muss, müssen alle Ressourcen, die das Laden beenden sollen, und alle Links, die falsch sein werden, aktualisiert werden.
NICHT SKALIEREN - Wenn Webseiten komplexer werden und Ansichten auf mehreren Seiten wiederverwendet werden, sind die relativen Links relativ zu der Datei, in die sie aufgenommen wurden. Wenn Sie einen HTML-Navigationsausschnitt haben, der sich auf jeder Seite befindet, ist relativ zu vielen verschiedenen Orten relativ. Das erste, was Menschen beim Erstellen einer Vorlage erkennen, ist, dass sie eine Möglichkeit zum Verwalten der URLs benötigen.
COMPUTED - Sie werden von Ihrem Browser implementiert (hoffentlich gemäß RFC). Siehe Kapitel 5 in RFC3986 .
HOPPLA! - Fehler oder Tippfehler können zu Spinnenfallen führen.
Die Entwicklung der Routen
Entwickler haben aufgehört, URLs in dem hier diskutierten Sinne zu schreiben. Alle Anforderungen beziehen sich auf die Indexdatei einer Website und enthalten eine Abfragezeichenfolge, auch bekannt als Route. Die Route kann als Mini-URL betrachtet werden, die Ihrer Anwendung den zu generierenden Inhalt mitteilt.
Routen Vorteile:
Meine Einstellung
Die meisten Menschen werden auf die eine oder andere Weise alle drei Formen in ihren Projekten verwenden. Der Schlüssel ist, sie zu verstehen und die für die Aufgabe am besten geeignete auszuwählen.
quelle
Wenn es für die Verwendung auf Ihrer Website vorgesehen ist, empfiehlt es sich, eine relative URL zu verwenden. Wenn Sie die Website auf einen anderen Domainnamen verschieben oder nur lokal debuggen müssen, können Sie dies tun.
Schauen Sie sich an, was Stackoverflow tut (Strg + U in Firefox):
In einigen Fällen verwenden sie absolute URLs:
... aber dies ist nur eine bewährte Methode, um die Geschwindigkeit zu verbessern. In Ihrem Fall sieht es nicht so aus, als würden Sie so etwas tun, also würde ich mir darüber keine Sorgen machen.
quelle
Ich werde hier mit der Mehrheit nicht einverstanden sein müssen.
Ich denke, das relative URL-Schema ist "in Ordnung", wenn Sie schnell etwas zum Laufen bringen und nicht über den Tellerrand hinaus denken möchten, insbesondere wenn Ihr Projekt klein ist und nur wenige Entwickler (oder nur Sie selbst) hat.
Sobald Sie jedoch anfangen, an großen, fetten Systemen zu arbeiten, in denen Sie ständig zwischen Domänen und Protokollen wechseln, halte ich einen eleganteren Ansatz für angebracht.
Wenn Sie im Wesentlichen absolute und relative URLs vergleichen, gewinnt Absolute. Warum? Weil es niemals brechen wird. Je. Eine absolute URL ist genau das, was sie verspricht. Der Haken ist, wenn Sie Ihre absoluten URLs pflegen müssen.
Der schwache Ansatz zur absoluten URL-Verknüpfung besteht darin, die gesamte URL hart zu codieren. Keine gute Idee und wahrscheinlich der Schuldige, warum die Leute sie als gefährlich / böse / nervig ansehen. Ein besserer Ansatz ist es, sich einen einfach zu verwendenden URL-Generator zu schreiben. Diese sind einfach zu schreiben und können unglaublich sein leistungsfähig sein - sie erkennen Ihr Protokoll automatisch, sind einfach zu konfigurieren (stellen Sie die URL für die gesamte App buchstäblich einmal ein) usw. und injizieren Ihre Domain von selbst. Das Schöne daran: Sie codieren weiterhin mit relativen URLs, und zur Laufzeit fügt die Anwendung Ihre URLs im laufenden Betrieb als vollständig absolut ein. Genial.
Angesichts der Tatsache, dass praktisch alle modernen Websites ein dynamisches Back-End verwenden, ist es im besten Interesse dieser Website, dies auf diese Weise zu tun. Absolute URLs stellen nicht nur sicher, wohin sie verweisen, sondern können auch die SEO-Leistung verbessern.
Ich könnte hinzufügen, dass das Argument, dass absolute URLs die Ladezeit der Seite irgendwie verändern werden, ein Mythos ist. Wenn Ihre Domain mehr als ein paar Bytes wiegt und Sie in den 1980er Jahren ein DFÜ-Modem verwenden, ist dies sicher. Das ist aber einfach nicht mehr der Fall. https://stackoverflow.com/ ist 25 Byte groß, während die Datei "topbar-sprite.png", die sie für den Navigationsbereich der Site verwenden, 9+ KB wiegt. Das bedeutet, dass die zusätzlichen URL-Daten im Vergleich zur Sprite-Datei 0,2% der geladenen Daten ausmachen und diese Datei nicht einmal als großer Leistungseinbruch angesehen wird.
Dieses große, nicht optimierte, ganzseitige Hintergrundbild verlangsamt viel eher Ihre Ladezeiten.
Ein interessanter Beitrag darüber, warum relative URLs nicht verwendet werden sollten, ist hier: http://yoast.com/relative-urls-issues/
Ein Problem, das beispielsweise bei Verwandten auftreten kann, ist, dass Serverzuordnungen (wohlgemerkt bei großen, durcheinandergebrachten Projekten) manchmal nicht mit Dateinamen übereinstimmen und der Entwickler möglicherweise eine relative URL annimmt, die dies einfach nicht ist wahr. Ich habe das heute bei einem Projekt gesehen, an dem ich gerade arbeite, und es hat eine ganze Seite heruntergebracht.
Oder vielleicht hat ein Entwickler vergessen, einen Zeiger zu wechseln, und plötzlich hat Google Ihre gesamte Testumgebung indiziert. Whoops - doppelte Inhalte (schlecht für SEO!).
Absolute können gefährlich sein, aber wenn sie richtig und auf eine Weise verwendet werden, die Ihren Build nicht kaputt macht, sind sie nachweislich zuverlässiger. Schauen Sie sich den Artikel oben an, der eine Reihe von Gründen enthält, warum der Wordpress-URL-Generator super toll ist.
:) :)
quelle
/
Verknüpfung mit dem Basispfad? dh/products/wallets/thing.html
im Gegensatz zuthing.html
im Gegensatz zuhttp://www.myshop.com/products/wallets/thing.html
echo Route::url('route_name')
eine absolute URL unter Verwendung der Site-URL und Routeninformationen mit der Option erstellen können , diese über HTTPS zu erstellen.In den meisten Fällen sind relative URLs der richtige Weg. Sie sind von Natur aus portabel. Wenn Sie also Ihre Site anheben und an einer Stelle platzieren möchten, an der sie sofort funktioniert, werden möglicherweise Stunden des Debuggens reduziert.
Es gibt einen ziemlich anständigen Artikel über absolute und relative URLs .
quelle
Ein URL , die beginnt , mit dem URL - Schema und Schema spezifischen Teil (
http://
,https://
,ftp://
, etc.) ist eine absolute URL.Jede andere URL ist eine relative URL und benötigt eine Basis-URL, von der die relative URL aufgelöst wird (und daher davon abhängt). Dies ist die URL der Ressource, in der die Referenz verwendet wird, sofern nicht anders angegeben.
In RFC 2396 - Anhang C finden Sie Beispiele zum Auflösen relativer URLs.
quelle
Angenommen, Sie haben eine Website www.yourserver.com. Im Stammverzeichnis für Webdokumente haben Sie ein Unterverzeichnis für Bilder und darin haben Sie myimage.jpg.
Eine absolute URL definiert den genauen Speicherort des Dokuments, zum Beispiel:
Eine relative URL definiert den Speicherort relativ zum aktuellen Verzeichnis . Angenommen, Sie befinden sich im Stammwebverzeichnis, in dem sich Ihr Bild befindet:
(relativ zu diesem Stammverzeichnis)
Sie sollten nach Möglichkeit immer relative URLs verwenden. Wenn Sie die Website auf www.anotherserver.com verschieben, müssen Sie alle absoluten URLs aktualisieren, die auf www.yourserver.com verweisen. Die relativen URLs funktionieren einfach so, wie sie sind.
quelle
Für jedes System, das die relative URI-Auflösung unterstützt, dienen sowohl relative als auch absolute URIs demselben Ziel: Referenzierung. Und sie können austauschbar verwendet werden. Sie können also jeweils anders entscheiden. Technisch bieten sie die gleiche Referenzierung.
Um genau zu sein, gibt es für jeden relativen URI bereits einen absoluten URI. Und das ist der Basis-URI, gegen den der relative URI aufgelöst wird. Ein relativer URI ist also tatsächlich ein Merkmal zusätzlich zu den absoluten URIs.
Und deshalb können Sie mit relativen URIs mehr tun als mit einem absoluten URI allein - dies ist besonders wichtig für statische Websites, deren Pflege im Vergleich zu absoluten URIs sonst nicht so flexibel wäre.
Diese positiven Effekte der relativen URI-Auflösung können auch für die dynamische Entwicklung von Webanwendungen genutzt werden. Die von absoluten URIs eingeführten Inflexibilitäten sind in einer dynamischen Umgebung auch leichter zu bewältigen. Daher entscheiden sich einige Entwickler, die sich über die URI-Auflösung und die ordnungsgemäße Implementierung und Verwaltung nicht sicher sind (nicht, dass dies immer einfach ist), häufig für die Verwendung von Absolut URIs in einem dynamischen Teil einer Website, da sie andere dynamische Funktionen (z. B. Konfigurationsvariable mit dem URI-Präfix) einführen können, um die Inflexibilität zu umgehen.
Was ist dann der Vorteil bei der Verwendung absoluter URIs? Technisch gibt es das nicht, aber eines würde ich sagen: Relative URIs sind komplexer, weil sie gegen den sogenannten absoluten Basis-URI aufgelöst werden müssen. Selbst wenn die Auflösung seit Jahren streng definiert ist, können Sie einen Client überfahren, der einen Fehler in der URI-Auflösung aufweist. Da absolute URIs keine Auflösung benötigen, besteht bei Verwendung absoluter URIs kein Risiko, dass bei der relativen URI-Auflösung ein fehlerhaftes Clientverhalten auftritt. Wie hoch ist das Risiko eigentlich? Nun, es ist sehr selten. Ich kenne nur einen Internetbrowser, bei dem ein Problem mit der relativen URI-Auflösung aufgetreten ist. Und das war nicht allgemein, sondern nur in einem sehr (obskuren) Fall.
Neben dem HTTP-Client (Browser) ist es für einen Autor von Hypertext-Dokumenten oder Code möglicherweise auch komplexer. Hier hat der absolute URI den Vorteil, dass er einfacher zu testen ist, da Sie ihn einfach so wie er ist in die Adressleiste Ihres Browsers eingeben können. Wenn es sich jedoch nicht nur um Ihre einstündige Arbeit handelt, ist es für Sie meistens von größerem Vorteil, die absolute und relative URI-Behandlung tatsächlich zu verstehen, damit Sie die Vorteile der relativen Verknüpfung tatsächlich nutzen können.
quelle
Ich würde von Herzen relative URLs empfehlen, um Bits derselben Site auf andere Bits derselben Site zu verweisen.
Vergessen Sie nicht, dass für eine Änderung von HTTPS - auch wenn Sie sich auf derselben Site befinden - eine absolute URL erforderlich ist.
quelle