Lidsky srozumitelné URL (zkr. CNC , také sémantické URL , anglicky přátelské URL ) je cesta URL skládající se ze srozumitelných slov [1] [2] [3] [4] namísto identifikátorů a odrážející strukturu souboru webu . Například místo nebo bude . /c14/3/97//index.php?cat=10&subcat=2&id=41/product/phone/Samsung/
Lidsky srozumitelné cesty zlepšují použitelnost a navíc umožňují, aby název odkazu předpokládal obsah stránky na něm [5] [1] [6] a reprezentoval strukturu webu [1] [6] .
Technicky může adresa URL obsahovat pouze latinská písmena a některé symboly. Všechny ostatní znaky, včetně ruských písmen, jsou zakódovány ( kódování procent ) a mohou vypadat jako %D0%9B%D1%83%D0%BA. Proto se v adresách obvykle používají latinská písmena, aby se uživatelům předešlo komplikací [7] .
Sémantické adresy URL jsou navrženy tak, aby zlepšily použitelnost a dostupnost webové stránky nebo webové služby , přičemž jsou pro neodborné uživatele okamžitě přirozené a intuitivní . Taková schémata URL se snaží odrážet koncepční strukturu souboru informací a oddělovat uživatelské rozhraní od vnitřní reprezentace informací na serveru. Mezi další důvody pro používání čistých adres URL patří optimalizace pro vyhledávače (SEO) [8] , přizpůsobení se softwarové architektuře ve stylu REST a zajištění toho, aby jednotlivé webové zdroje zůstaly konzistentně na stejné adrese URL. Díky tomu je World Wide Web stabilnější a užitečnější systém a poskytuje trvanlivější a spolehlivější záložky webových zdrojů ( záložkové adresy URL ), které nezískají soubory cookie nebo data relace z jiného počítače [9] .
Sémantické URL také neobsahuje detaily implementace webové aplikace, na které je stránka založena. To přináší výhody snížením složitosti pozdější změny implementace zdroje. Mnoho nesémantických adres URL například obsahuje název souboru skriptu na straně serveru , jako je example.php , example.asp nebo cgi-bin . Pokud by se změnila základní implementace zdroje, musely by se s ním změnit i tyto adresy URL. Podobně, když je adresa URL nesémantická, pokud byla databáze webu přesunuta nebo restrukturalizována, existovala možnost nefunkčních odkazů z interních i externích webů, které by mohly způsobit jejich odstranění ze seznamů vyhledávačů . Použití sémantické adresy URL poskytuje různým uživatelským agentům konzistentní umístění pro zdroje nezávislé na vnitřní struktuře. Další potenciální výhodou používání sémantických adres URL je, že skrytí interních informací o serveru nebo aplikaci může zlepšit zabezpečení systému .
Popisná adresa URL neobsahuje mnoho dalších znaků [10] (jako ?nebo &[5] ). Tato URL je lépe zapamatovatelná a uživatel si může odvodit, co se na stránce zobrazí [5] .
„Člověkem čitelné adresy URL“ zahrnují zkrácení adres stránek, aby byly co nejstručnější a nejsrozumitelnější. Vytvářejí zdání logické datové struktury přirozené pro osobu na serveru a prezentují ji ve formě hierarchické (stromové) struktury podobné souborovému systému . Takové adresy jsou snadněji čitelné, pochopitelné a reprodukovatelné. Navíc pomáhá orientovat se v logické struktuře webu, pouhým pohledem na vnoření adresářů. Není nutné chodit na stránku, abyste zjistili, co je na ní zveřejněno. V některých případech, abyste mohli přejít do nadřazených adresářů, stačí smazat adresu na správné místo a pro přechod na hlavní stránku se vymaže vše kromě názvu domény .
Takové adresy zobrazují vyhledávače přímo ve výsledcích vyhledávání [11] , včetně vyhledávání klíčových slov na těchto adresách . CNC se používá v metodách optimalizace pro vyhledávače ( SEO ) .
Používání složitých adres URL místo „člověkem čitelných“ adresářů již v roce 1996 vystupovalo mezi 10 nejčastějšími chybami webdesignu [12] . V roce 1998 Tim Berners-Lee napsal článek o „cool URI“. Artemy Lebedev psal o čisté a srozumitelné URL v březnu 2000 v průvodci. Termín "NC" znamená "lidsky pochopitelné URL", další možnost - písmena. „lidsky pochopitelná url“, kde slang „url“ je URL [13] . Hlavní verze výskytu tohoto termínu v ruštině spočívá v tom, že v září až listopadu 2000 byla poznámka „CNC a PHP“ z osobního blogu [14] publikována jako článek na několika specializovaných webových programovacích serverech a následné rozšíření odkazy na tento článek vedly k širokému používání tohoto termínu.
Google takovou adresu nazývá „jednoduchá URL“ [3] nebo „jednoduchá URL“ [15] . Microsoft SharePoint používá název URL vyhovující podmínkám nebo fulltextová adresa URL. Další používané názvy jsou: sémantická URL (dosl. sémantická URL), čistá URL [16] , RESTful URL , pěkná URL , přátelská URL [17] (FURL), přívětivá URL pro vyhledávač (SEF URL) [18] [19] , přívětivá URL pro optimalizaci pro vyhledávače (SEO-friendly URL) , pro člověka přívětivá URL , uživatelsky přívětivá URL a pro člověka čitelná URL .
Nesémantická adresa URL se obvykle skládá z cesty , názvu skriptu a řetězce dotazu . Parametry řetězce dotazu definují obsah zobrazený na stránce a často zahrnují informace, které jsou obtížně srozumitelné nebo nejsou pro uživatele relevantní, jako jsou interní číselné identifikátory hodnot z databáze , " kódování procent ", ID relace , detaily implementací a tak dále. Sémantické adresy URL na druhé straně obsahují pouze cestu ke zdroji, která odráží určitou logickou strukturu v hierarchii, takže ji uživatelé mohou snadno interpretovat a manipulovat s ní.
Organizace obsahu by měla být taková, aby URL adresy měly logickou strukturu [4] . V CNC mají vyhledávače lepší pochopení pro vnořování [2] . Odstraněním obskurní „nepotřebné“ části URL jiné než NC získá uživatel nefunkční odkaz [3] . K pohybu po úrovních hierarchie struktury webu také používají podobné CNC, duplikující navigaci [6] . Pokud je poslední slovo v CNC smazáno před lomítkem , bude uživatel zařazen do vyšší kategorie [2] . Adresa URL může zobrazit cestu z adresáře na serveru k souboru. Současně musí CNC obsahovat stejné informace pro stejný soubor, jaké přijímá ne-CNC skript v řádku parametrů [8] . Chcete-li to provést, použijte různé způsoby, jak přepsat URL .
Nesémantická adresa URL | Sémantická adresa 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 |
Adresa URL by měla být krátká a popisná a může obsahovat pomlčky mezi slovy místo podtržítek. Vyhýbání se speciálním znakům je také způsobeno tím, že vyhledávací roboti dále neindexují URL ?, za předpokladu, že za ním nejsou žádné cenné informace. [dvacet]
V technikách optimalizace pro vyhledávače ( SEO ) je CNC naplněn relevantními klíčovými slovy , která stručně popisují obsah [21] a nepodstatná slova jsou odstraněna. Mezi běžná slova, která jsou odstraněna, patří články a spojky , zatímco popisná klíčová slova jsou přidána pro zvýšení uživatelské přívětivosti a zlepšení hodnocení ve vyhledávačích [8] .
Implementace sémantických URL zahrnuje "mapování URL" prostřednictvím shody vzorů nebo "Rewrite engine" - transparentní metody přepisování URL . Protože k tomu obvykle dochází na straně serveru, často jediným formulářem, který uživatel uvidí, bude sémantická adresa URL.
Identifikátor fragmentu může být zahrnut na konci sémantické adresy URL pro odkazy na stránce a nemusí být pro uživatele srozumitelný. [23]
Některé systémy definují slimák jako součást adresy URL, která identifikuje stránku pomocí lidsky čitelných klíčových slov [24] [25] Obvykle je to koncová část adresy URL, kterou lze interpretovat jako název samotného zdroje, jako je základní název v názvu souboru nebo názvu stránky. Tento název "slug" pochází z mediálního použití slova slimák
Obvykle je slimák automaticky generován z názvu stránky, ale může být také zadán nebo upraven ručně tak, že zatímco název stránky zůstává určen pro lidské zobrazení a čitelnost, jeho slug může být optimalizován pro stručnost nebo pro zpracování vyhledávačem. Dlouhé názvy stránek lze také zkrátit, aby byla konečná URL zachována v přiměřené délce.
V zásadě se slug provádí výhradně malými písmeny, diakritické znaky jsou nahrazeny písmeny latinky a znaky mezer jsou nahrazeny pomlčkami nebo podtržítky , aby se zabránilo „kódování procent“. Interpunkční znaménka jsou většinou odstraněna, stejně jako některá krátká běžná slova, jako jsou spojky . Například:
Interpretace adres stránek, jak je uvedeno výše, je řešena serverem a softwarem webu. Každá implementace serveru má svůj vlastní modul, který tuto funkcionalitu implementuje.
Na serveru IIS je tato funkce implementována bezplatným modulem URLRewriter. Současně existuje modul mod_rewrite pro server Apache , který se konfiguruje prostřednictvím souboru .htaccess .
Například zadáním následujícího kódu bude webmaster schopen přijímat všechny parametry předávané v PHP prostřednictvím pole $_SERVER['REQUEST_URI']a vstupním bodem pro jakýkoli požadavek bude index.php [26] .
Přepište motor zapnutý RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,QSA]Ve webových frameworkech ( CodeIgniter , Django , Node.js , Ruby on Rails nebo Zend Framework ) webový server ke skriptu nepřistupuje, ale prohlíží si speciální soubor pro nastavení zadané cesty. Taková cesta je naznačena buď regulárními výrazy, nebo ve speciálním jazyce.
Například v Ruby on Rails se pro určení, že metoda třídy bude volána při volání a /users/loginmetoda třídy showu userspřípadu , použije následující kód: /users/indexusers
Kolejnice :: Aplikace . trasy . draw do get 'users' , to : 'users#index' get 'users/:id' , to : 'users#show' endV některých webových nástrojích nejsou takové konstrukce vyžadovány a všechny adresy závisí na metodě třídy a jsou určeny jejím názvem a počtem argumentů.
Například takto funguje Ramaze . Při volání show/id/, kde id je proměnná (v tomto případě musí být třída řadičem):
class CommentsController < Ramaze :: Controller def index # Vytvořit konec seznamu komentářů def show ( id ) # Zobrazit komentář s požadovaným ID end end