Human-understandable URL (forkortet CNC , også semantisk URL , engelsk venlig URL ) er en URL - sti bestående af forståelige ord [1] [2] [3] [4] i stedet for identifikatorer og afspejler filstrukturen af webstedet . For eksempel i stedet for eller vil være . /c14/3/97//index.php?cat=10&subcat=2&id=41/product/phone/Samsung/
Stier, der kan forstås af mennesker, forbedrer brugervenligheden . Derudover tillader de, at navnet på linket forudsætter indholdet af siden på det [5] [1] [6] og repræsenterer strukturen på webstedet [1] [6] .
Teknisk set kan en URL kun indeholde latinske bogstaver og nogle symboler. Alle andre tegn, inklusive russiske bogstaver, er kodet ( procentkodning ) og kan se ud som %D0%9B%D1%83%D0%BA. Derfor bruges normalt latinske bogstaver i adresser for at undgå komplikationer for brugere [7] .
Semantiske URL'er er designet til at forbedre brugervenligheden og tilgængeligheden af et websted eller en webtjeneste, mens de er umiddelbart naturlige og intuitive for ikke- specialistbrugere . Sådanne URL-skemaer søger at afspejle den konceptuelle struktur af et informationssæt og afkoble brugergrænsefladen fra den interne repræsentation af informationen på serveren. Andre grunde til at bruge rene URL'er omfatter søgemaskineoptimering (SEO) [8] , overensstemmelse med en REST - stil softwarearkitektur og sørge for, at individuelle webressourcer forbliver konsekvent på den samme URL. Dette gør World Wide Web til et mere stabilt og nyttigt system og giver mere holdbare og pålidelige webressourcebogmærker ( bogmærke - URL ), som ikke får cookie- eller sessionsdata fra en anden computer [9] .
Den semantiske URL indeholder heller ikke implementeringsdetaljerne for den webapplikation, som siden er baseret på. Dette gavner ved at reducere kompleksiteten ved at ændre implementeringen af ressourcen på et senere tidspunkt. For eksempel indeholder mange ikke-semantiske URL'er filnavnet på et serversidescript , såsom example.php , example.asp eller cgi-bin . Hvis den underliggende implementering af ressourcen ændrede sig, skulle disse URL'er ændres med den. Ligeledes, når webadressen er ikke-semantisk, hvis webstedets database blev flyttet eller omstruktureret, var der mulighed for brudte links fra både interne og eksterne websteder, hvoraf sidstnævnte kunne medføre, at de blev fjernet fra søgemaskinelister . Brugen af en semantisk URL giver forskellige brugeragenter en ensartet placering for ressourcer uafhængig af den interne struktur. En anden potentiel fordel ved at bruge semantiske URL'er er, at skjule interne server- eller applikationsoplysninger kan forbedre systemsikkerheden .
Venlig URL indeholder ikke mange ekstra tegn [10] (som ?eller &[5] ). Denne URL er mere mindeværdig, og brugeren kan udlede, hvad der vil blive vist på siden [5] .
"Human-læsbare URL'er" involverer forkortelse af sideadresser for at være så kortfattede og forståelige som muligt. De skaber et udseende af en logisk datastruktur, der er naturlig for en person på serveren, og præsenterer den i form af en hierarkisk (trælignende) struktur, der ligner et filsystem . Sådanne adresser er nemmere at læse, forstå og gengive. Derudover hjælper det at navigere i den logiske struktur på webstedet, blot ved at se på indlejring af mapper. Det er ikke nødvendigt at gå ind på siden for at finde ud af, hvad der står på den. I nogle tilfælde, for at gå til de overordnede mapper, skal du bare slette adressen til det rigtige sted, og for at gå til hovedsiden slettes alt undtagen domænenavnet .
Sådanne adresser vises af søgemaskiner direkte i søgeresultaterne [11] , herunder søgeordssøgninger på disse adresser . CNC bruges i søgemaskineoptimering ( SEO ) metoder .
Brug af komplekse URL'er i stedet for "human-readable" mapper skilte sig allerede ud i top 10 webdesignfejl i 1996 [12] . I 1998 skrev Tim Berners-Lee en artikel om "seje URI'er". Artemy Lebedev skrev om en ren og forståelig URL i marts 2000 i Guiden. Udtrykket "NC" står for "human-understandable URL", en anden mulighed - bogstaver. "human forståelig url", hvor slang "url" er URL [13] . Hovedversionen af dette udtryks udseende på russisk er, at i september-november 2000 blev noten "CNC og PHP" fra en personlig blog [14] offentliggjort som en artikel på flere specialiserede webprogrammeringssites, og den efterfølgende udbredelse af links til denne artikel gav anledning til den udbredte brug af dette udtryk.
Google kalder en sådan adresse for en "simple-to-understand URL" [3] eller en "simple URL" [15] . Microsoft SharePoint bruger navnet term-venlig URL eller fuldtekst URL. Andre anvendte navne er: semantisk URL (lit. semantisk URL), ren URL [16] , RESTful URL , smuk URL , venlig URL [17] (FURL), søgemaskinevenlig URL (SEF URL) [18] [19] , søgemaskineoptimeringsvenlig URL (SEO-venlig URL) , menneskevenlig URL , brugervenlig URL og menneskelig læsbar URL .
Typisk består en ikke-semantisk URL af en sti , et scriptnavn og en forespørgselsstreng . Forespørgselsstrengparametre definerer indholdet vist på siden og inkluderer ofte information, der er svær at forstå eller ikke relevant for brugerne, såsom interne numeriske identifikatorer for værdier fra databasen , " procentkodning ", sessions-id'er , detaljer om implementeringer og så videre. Semantiske URL'er indeholder på den anden side kun ressourcestien, som afspejler en eller anden logisk struktur i hierarkiet, så brugerne nemt kan fortolke og manipulere den.
Indholdsorganisering bør være sådan, at URL'er har en logisk struktur [4] . I CNC har søgemaskiner en bedre forståelse af nesting [2] . Ved at fjerne den obskure "unødvendige" del af den ikke-NC URL, får brugeren et brudt link [3] . For at bevæge sig gennem niveauerne af sitestrukturhierarkiet bruger de også en lignende CNC, der dublerer navigation [6] . Hvis det sidste ord i CNC'en slettes før skråstregen , vil brugeren blive placeret i en højere kategori [2] . URL'en kan vise stien fra en mappe på serveren til en fil. Samtidig skal CNC'en indeholde de samme informationer for den samme fil, som det ikke-CNC-script modtager i parameterlinjen [8] . For at gøre dette skal du bruge forskellige måder til at omskrive URL'en .
Ikke-semantisk URL | Semantisk URL |
---|---|
http://example.com/index.php?page=name | http://example.com/name |
http://example.com/index.php?page=consulting/marketing | http://example.com/consulting/marketing |
http://example.com/products?category=2&pid=25 | http://example.com/products/2/25 |
http://example.com/cgi-bin/feed.cgi?feed=news&frm=rss | http://example.com/news.rss |
http://example.com/services/index.jsp?category=legal&id=patents | http://example.com/services/legal/patents |
http://example.com/kb/index.php?cat=8&id=41 | http://example.com/kb/8/41 |
http://example.com/index.php?mod=profiles&id=193 | http://example.com/profiles/193 |
http://en.wikipedia.org/w/index.php?title=Semantic_URL | http://en.wikipedia.org/wiki/Semantic_URL |
URL'en skal være kort og beskrivende og kan indeholde bindestreger mellem ord i stedet for understregninger. Undgåelsen af specialtegn skyldes også, at søgerobotter ikke indekserer URL'en yderligere ?, forudsat at der ikke er værdifuld information efter den. [tyve]
I søgemaskineoptimeringsteknikker ( SEO ) er CNC'en fyldt med relevante søgeord , der kort beskriver indholdet [21] , og irrelevante ord fjernes. Almindelige ord, der fjernes, omfatter artikler og konjunktioner , mens beskrivende søgeord tilføjes for at øge brugervenlighed og forbedre søgemaskinernes placeringer [8] .
Implementeringen af semantiske URL'er inkluderer "URL-mapping" gennem mønstermatching eller "Rewrite engine" - transparente URL - omskrivningsmetoder . Da dette normalt sker på serversiden, vil ofte den eneste form, der er synlig for brugeren, være den semantiske URL.
Fragmentidentifikatoren kan være inkluderet i slutningen af den semantiske URL for links på siden og behøver ikke at være forståelig for brugeren. [23]
Nogle systemer definerer en slug som en del af en URL, der identificerer en side i menneskelæselige søgeord [24] [25] Det er normalt den efterfølgende del af URL'en, som kan fortolkes som navnet på selve ressourcen, ligesom basisnavnet i et filnavn eller sidetitel. Dette navn "slug" kommer fra mediernes brug af ordet slug
Normalt genereres sneglen automatisk ud fra sidetitlen, men kan også indtastes eller ændres manuelt, så mens sidetitlen forbliver beregnet til menneskelig visning og læsbarhed, kan dens snegl optimeres for korthed eller til søgemaskinebehandling. Lange sidetitler kan også afkortes for at holde den endelige URL i en rimelig længde.
Dybest set udføres slug udelukkende med små bogstaver, diakritiske tegn erstattes med latinske bogstaver, og mellemrumstegn erstattes med bindestreger eller understregninger for at undgå "procent-kodning". Tegnsætningstegn fjernes for det meste, ligesom nogle korte almindelige ord som f.eks. konjunktioner . For eksempel:
Fortolkningen af sideadresser, som nævnt ovenfor, håndteres af serveren og webstedets software. Hver serverimplementering har sit eget modul, der implementerer denne funktionalitet.
På IIS -serveren implementeres denne funktionalitet af det gratis URLRewriter-modul. Samtidig er der et mod_rewrite - modul til Apache -serveren , som er konfigureret gennem .htaccess -filen .
For eksempel, ved at angive følgende kode, vil webmasteren være i stand til at modtage alle de parametre, der sendes i PHP gennem et array $_SERVER['REQUEST_URI'], og indgangspunktet for enhver anmodning vil være index.php [26] .
Omskriv motor til RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,QSA]I web-frameworks ( CodeIgniter , Django , Node.js , Ruby on Rails eller Zend Framework ) får webserveren ikke adgang til scriptet, men ser på en speciel fil for indstillingerne for den angivne sti. En sådan vej er angivet enten med regulære udtryk eller på et særligt sprog.
For eksempel, i Ruby on Rails, for at specificere, at en klassemetode vil blive kaldt på et opkald og /users/loginen showklassemetode userspå en sag /users/ , bruges følgende kode: indexusers
Skinner :: Anvendelse . ruter . draw skal du få 'brugere' , til : 'brugere#indeks' få 'brugere/:id' , til : 'brugere#vis' slutI nogle webværktøjer er sådanne konstruktioner ikke nødvendige, og alle adresser afhænger af klassemetoden og bestemmes af dens navn og antallet af argumenter.
For eksempel er det sådan, Ramaze fungerer . Når du kalder show/id/, hvor id er en variabel (i dette tilfælde skal klassen være en controller):
class CommentsController < Ramaze :: Controller def index # Opret kommentarliste slut def show ( id ) # Vis en kommentar med det ønskede ID - slut