Människan-förståelig URL (förkortning CNC , även semantisk URL , engelsk vänlig URL ) är en URL - sökväg som består av begripliga ord [1] [2] [3] [4] , istället för identifierare, och som återspeglar filstrukturen av webbplatsen . Till exempel istället för eller kommer att vara . /c14/3/97//index.php?cat=10&subcat=2&id=41/product/phone/Samsung/
Människans förståeliga vägar förbättrar användbarheten . Dessutom tillåter de att namnet på länken förutsätter innehållet på sidan på den [5] [1] [6] och representerar webbplatsens struktur [1] [6] .
Tekniskt sett kan en URL bara innehålla latinska bokstäver och vissa symboler. Alla andra tecken, inklusive ryska bokstäver, är kodade ( procentkodning ) och kan se ut som %D0%9B%D1%83%D0%BA. Därför används vanligtvis latinska bokstäver i adresser för att undvika komplikationer för användarna [7] .
Semantiska webbadresser är utformade för att förbättra användbarheten och tillgängligheten för en webbplats eller webbtjänst samtidigt som de är omedelbart naturliga och intuitiva för icke- specialistanvändare . Sådana URL-scheman försöker återspegla den konceptuella strukturen för en uppsättning information och frikoppla användargränssnittet från den interna representationen av informationen på servern. Andra anledningar till att använda rena webbadresser inkluderar sökmotoroptimering (SEO) [8] , överensstämmelse med en mjukvaruarkitektur i REST - stil och se till att enskilda webbresurser stannar konsekvent på samma URL. Detta gör World Wide Web till ett mer stabilt och användbart system, och ger mer hållbara och tillförlitliga webbresursbokmärken ( bokmärkbar URL ) som inte får cookies eller sessionsdata från en annan dator [9] .
Den semantiska URL:en innehåller inte heller implementeringsdetaljerna för webbapplikationen som sidan är baserad på. Detta gynnar genom att minska komplexiteten i att ändra implementeringen av resursen vid ett senare tillfälle. Till exempel innehåller många icke-semantiska URL:er filnamnet på ett serversideskript , som exempel.php , example.asp eller cgi-bin . Om den underliggande implementeringen av resursen ändrades måste dessa webbadresser ändras med den. På samma sätt, när webbadressen är icke-semantisk, om webbplatsens databas flyttades eller omstrukturerades, fanns det en möjlighet för trasiga länkar från både interna och externa webbplatser, av vilka de senare kan leda till att de tas bort från sökmotorernas listor . Användningen av en semantisk URL ger olika användaragenter en konsekvent plats för resurser oberoende av den interna strukturen. En annan potentiell fördel med att använda semantiska URL:er är att dölja intern server- eller programinformation kan förbättra systemsäkerheten .
Användbar URL innehåller inte många extra tecken [10] (som ?eller &[5] ). Denna URL är mer minnesvärd och användaren kan sluta sig till vad som kommer att visas på sidan [5] .
"Människligt läsbara webbadresser" innebär att förkorta sidadresser för att vara så kortfattade och begripliga som möjligt. De skapar en sken av en logisk datastruktur som är naturlig för en person på servern, och presenterar den i form av en hierarkisk (trädliknande) struktur, liknande ett filsystem . Sådana adresser är lättare att läsa, förstå och återskapa. Dessutom hjälper det att navigera i den logiska strukturen på webbplatsen, bara genom att titta på kapsling av kataloger. Det är inte nödvändigt att gå in på sidan för att ta reda på vad som står på den. I vissa fall, för att gå till överordnade kataloger, behöver du bara radera adressen till rätt plats, och för att gå till huvudsidan raderas allt utom domännamnet .
Sådana adresser visas av sökmotorer direkt i sökresultaten [11] , inklusive nyckelordssökningar på dessa adresser . CNC används i sökmotoroptimering ( SEO ) metoder .
Att använda komplexa webbadresser istället för "läsbara" kataloger stod redan ut bland de 10 bästa webbdesignmisstagen 1996 [12] . 1998 skrev Tim Berners-Lee en artikel om "cool URIs". Artemy Lebedev skrev om en ren och begriplig URL i mars 2000 i guiden. Termen "NC" står för "human-understandable URL", ett annat alternativ - bokstäver. "human understandable url", där slang "url" är URL [13] . Huvudversionen av utseendet på denna term på ryska är att i september-november 2000 publicerades anteckningen "CNC och PHP" från en personlig blogg [14] som en artikel på flera specialiserade webbprogrammeringssajter, och den efterföljande prevalensen av länkar till denna artikel gav upphov till den utbredda användningen av denna term.
Google kallar en sådan adress för en "enkel att förstå URL" [3] eller en "enkel URL" [15] . Microsoft SharePoint använder namnet term-vänlig URL eller fulltext URL. Andra namn som används är: semantisk URL (lit. semantisk URL), ren URL [16] , RESTful URL , pretty URL , friendly URL [17] (FURL), sökmotorvänlig URL (SEF URL) [18] [19] , sökmotoroptimeringsvänlig URL (SEO-vänlig URL) , människovänlig URL , användarvänlig URL och mänsklig läsbar URL .
Vanligtvis består en icke-semantisk URL av en sökväg , ett skriptnamn och en frågesträng . Frågesträngsparametrar definierar innehållet som visas på sidan och innehåller ofta information som är svår att förstå eller som inte är relevant för användarna, såsom interna numeriska identifierare för värden från databasen , " procentkodning ", sessions-ID:n , detaljer om implementeringar och så vidare. Semantiska URL:er, å andra sidan, innehåller bara resurssökvägen, vilket återspeglar en viss logisk struktur i hierarkin så att användare enkelt kan tolka och manipulera den.
Innehållsorganisation bör vara sådan att webbadresser har en logisk struktur [4] . I CNC har sökmotorer en bättre förståelse för kapsling [2] . Genom att ta bort den obskyra "onödiga" delen av icke-NC-URL:n får användaren en trasig länk [3] . För att gå igenom nivåerna i webbplatsstrukturhierarkin använder de också en liknande CNC, som duplicerar navigering [6] . Om det sista ordet i CNC:n raderas före snedstrecket kommer användaren att placeras i en högre kategori [2] . URL:en kan visa sökvägen från en katalog på servern till en fil. Samtidigt måste CNC:n innehålla samma information för samma fil som icke-CNC-skriptet tar emot i parameterraden [8] . För att göra detta, använd olika sätt att skriva om URL .
Icke-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 |
Webbadressen ska vara kort och beskrivande och kan innehålla bindestreck mellan ord istället för understreck. Undvikandet av specialtecken beror också på att sökrobotar inte indexerar webbadressen ytterligare ?, förutsatt att det inte finns någon värdefull information efter den. [tjugo]
I sökmotoroptimeringstekniker ( SEO ) fylls CNC:n med relevanta nyckelord som kort beskriver innehållet [21] och irrelevanta ord tas bort. Vanliga ord som tas bort inkluderar artiklar och konjunktioner , medan beskrivande nyckelord läggs till för att öka användarvänligheten och förbättra sökmotorernas rankning [8] .
Implementeringen av semantiska webbadresser inkluderar "URL-mappning" genom mönstermatchning eller "Rewrite engine" - transparenta URL- omskrivningsmetoder . Eftersom detta vanligtvis händer på serversidan, kommer ofta den enda form som är synlig för användaren att vara den semantiska URL:en.
Fragmentidentifieraren kan inkluderas i slutet av den semantiska URL:en för länkar på sidan, och behöver inte vara begriplig för användaren. [23]
Vissa system definierar en slug som en del av en URL som identifierar en sida med mänskligt läsbara nyckelord [24] [25] Det är vanligtvis den avslutande delen av URL:en, som kan tolkas som namnet på själva resursen, som basnamnet i ett filnamn eller sidtitel. Detta namn "snigel" kommer från medias användning av ordet snigel
Vanligtvis genereras snigeln automatiskt från sidtiteln, men kan också matas in eller ändras manuellt så att även om sidtiteln förblir avsedd för mänsklig visning och läsbarhet, kan dess snigel optimeras för korthet eller för sökmotorbearbetning. Långa sidtitlar kan också trunkeras för att hålla den slutliga webbadressen på en rimlig längd.
I grund och botten görs slug helt med gemener, diakritiska tecken ersätts med latinska bokstäver och blankstegstecken ersätts med bindestreck eller understreck för att undvika "procentkodning". Skiljetecken tas oftast bort, liksom några korta vanliga ord som konjunktioner . Till exempel:
Tolkningen av sidadresser, som nämnts ovan, hanteras av servern och webbplatsens programvara. Varje serverimplementering har sin egen modul som implementerar denna funktionalitet.
På IIS -servern implementeras denna funktion av den kostnadsfria URLRewriter-modulen. Samtidigt finns det en mod_rewrite- modul för Apache -servern , som konfigureras genom .htaccess -filen .
Till exempel, genom att ange följande kod, kommer webbmastern att kunna ta emot alla parametrar som skickas i PHP genom en array $_SERVER['REQUEST_URI'], och ingångspunkten för varje begäran kommer att vara index.php [26] .
Skriv om motorn på RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,QSA]I webbramverk ( CodeIgniter , Django , Node.js , Ruby on Rails eller Zend Framework ) kommer inte webbservern åt skriptet utan tittar på en speciell fil för inställningarna för den angivna sökvägen. En sådan väg anges antingen med reguljära uttryck eller på ett speciellt språk.
Till exempel, i Ruby on Rails, för att ange att en klassmetod ska anropas vid ett anrop och /users/loginen showklassmetod userspå ett fall , /users/ används följande kod: indexusers
Räls :: Användning . rutter . dra gör få 'users' , till : 'users#index' få 'users/:id' , till : 'users#show' slutI vissa webbverktyg krävs inte sådana konstruktioner, och alla adresser beror på klassmetoden och bestäms av dess namn och antalet argument.
Det är till exempel så här Ramaze fungerar . När du anropar show/id/, där id är en variabel (i det här fallet måste klassen vara en kontroller):
class CommentsController < Ramaze :: Controller def index # Skapa kommentarslista slut def show ( id ) # Visa en kommentar med önskat ID - slutslut