Datum publikace:
Kódované znaky v URL: kdy dekódování změní přesměrování

Co v článku najdete
- Oddělte původní řetězec, parser a chování serveru
- Model A: diakritika a odpovídající kódovaný zápis
- Model B: kódované lomítko není automaticky oddělovač cesty
- Model C: procento se mohlo zakódovat znovu
- Přenos tabulkou může vytvořit další typ chyby
- Předejte matici konkrétních případů
- Opravujte podklady a implementaci podle různých důkazů
- Po změně znovu použijte přesné vstupy
- Změna jedné části adresy není převod celé URL
- Cvičení: čistší seznam, nebo ztracený případ?
- Časté otázky
V exportu stojí /čaj/, v druhém seznamu /%C4%8Daj/ a vedle nich /a%2Fb/. Má se všechno nejprve převést na čitelný text? Dekódování celé URL není bezpečné čištění inventáře. Některé zápisy zdejší parser sjednotí, jiné ponechá odlišné. Nejdřív zjistěte, co přesně porovnáváte a který vstup musí zachovat migrace.
Na třech malých modelech ukážeme rozdíl mezi znakem v cestě, kódovaným lomítkem a opakovaným kódováním procenta. Použijeme kontrolu pokrytí migrace, která pracuje s vloženými podklady. Výsledky příkladů byly ověřené lokálním během současného jádra a URL parseru. Nejde o HTTP test example.com ani o tvrzení, že se každý server chová stejně.
Oddělte původní řetězec, parser a chování serveru
Nejdřív uchovejte přesný text získaný z exportu. Vedle něj lze zaznamenat hodnotu, kterou zpracuje konkrétní parser. Třetí samostatná informace je skutečná odpověď vašeho webu. Podobně zobrazená adresa v prohlížeči tyto tři vrstvy automaticky nespojuje a nemusí být vhodným jediným důkazem při předání.
URL Standard popisuje procentové kódování jako znak procenta následovaný dvěma šestnáctkovými číslicemi. Neascii znaky se při příslušném zpracování URL převádějí na kódované bajty. To vysvětluje existenci zápisu s procenty, ale není to pokyn dekódovat všechny části adresy před porovnáním.
| Vrstva | Modelový údaj | Co potvrzuje |
|---|---|---|
| Původní export | https://example.com/čaj/ | Přesný získaný vstup |
| Výstup URL parseru | https://example.com/%C4%8Daj/ | Způsob zpracování v tomto prostředí |
| Živá odpověď | V modelu netestována | Bez další kontroly nic o serveru |
Model A: diakritika a odpovídající kódovaný zápis
Do původního seznamu vložte https://example.com/čaj/. Do nového seznamu dejte stejný host a cestu zapsanou https://example.com/%C4%8Daj/. Mapu nechte prázdnou. Zdejší kontrola vyhodnotí jednu zachovanou URL: oba konkrétní vstupy po zpracování použitým URL parserem odpovídají stejné hodnotě.
Při tomto výsledku nevzniklo přesměrování a žádná stránka nebyla otevřena. Závěr je omezený na shodu v dodaných seznamech. Do pracovního záznamu napište původ obou podob a konkrétní metodu. Neodvozujte z jednoho příkladu, že nástroj automaticky slučuje všechny možné kombinace znaků, kódování nebo serverových cest.
Také nejde o převod diakritiky na text bez háčků. /čaj/ a /caj/ jsou jiné hodnoty a výsledek pro první dvojici jejich shodu nepotvrzuje. Pokud mají po migraci skončit na stejném návodu, potřebujete odpovídající plán jejich obsluhy. Samotná podobnost slov není přesměrovací pravidlo.
Model B: kódované lomítko není automaticky oddělovač cesty
Nyní porovnejte https://example.com/a%2Fb/ a https://example.com/a/b/. V lokálně ověřeném zpracování zůstávají odlišné. Pokud první adresu vložíte do původního seznamu, druhou do nového a nepřidáte mapu, kontrola oznámí chybějící rozhodnutí pro původní vstup.
Rozdíl je vidět i bez znalosti serverové konfigurace. První řetězec obsahuje kódovanou hodnotu uvnitř části cesty, druhý skutečné lomítko mezi částmi. Hromadné dekódování by změnilo dodaný vstup ještě před kontrolou a mohlo by vytvořit zdánlivou shodu. Původní otázka, jak se má přesná stará adresa obsloužit, by zmizela.
O správné náhradě nerozhoduje dekódovací funkce. Pokud je v projektu potvrzeno, že první vstup má přejít na druhý, zapište tuto konkrétní změnu do mapy. Pokud jde o dva různé dokumenty, zachovejte jejich samostatné osudy. Rozhodnutí musí vycházet z obsahu a skutečného způsobu obsluhy.
source;target;status
https://example.com/a%2Fb/;https://example.com/a/b/;301
S touto mapou bude modelový původní vstup přesměrovaný na adresu v novém seznamu. To je plánovaný vztah v tabulce. Před implementací musí správce potvrdit, jak jeho systém přijímá a vyhodnocuje kódovanou cestu; po nasazení se ověřuje přesný původní vstup. Tento článek nepředepisuje univerzální serverovou konfiguraci.
Model C: procento se mohlo zakódovat znovu
Třetí zápis je https://example.com/a%252Fb/. Ve zdejším parseru není totožný s https://example.com/a%2Fb/ ani s https://example.com/a/b/. Sekvence %25 zde představuje zakódované procento; opakované dekódování by proto postupně vytvářelo další podoby. Tím byste z původního řetězce vyráběli odlišné vstupy.
Ve skutečném exportu může taková hodnota vzniknout opakovaným zpracováním, ale samotný vzhled příčinu neprokazuje. Může jít i o doložený historický vstup, který projekt musí obsloužit. Neoznačujte všechny řádky s %25 za chybné ani je hromadně nemažte. Nejprve dohledávejte původ a místo změny.
Máte-li dvě verze exportu, porovnejte příslušnou buňku v nezpracovaném souboru. Zjistěte, zda se hodnota změnila při získání dat, při tabulkové úpravě nebo při další přípravě. Poznámka „opraveno kódování“ nestačí: další člověk potřebuje vědět, který přesný přepis byl proveden a na základě jakého důkazu.
Přenos tabulkou může vytvořit další typ chyby
Soubor CSV má vlastní pravidla oddělování a uvozovek. Procentové kódování URL je jiná vrstva. Pokud se soubor rozpadne na špatné sloupce, úprava %2F problém nevyřeší. Podobně opravený oddělovač nedokládá, že hodnoty adres zůstaly stejné. Tyto kontroly provádějte odděleně.
Vyberte malou sadu původních adres, převeďte pracovní list na skutečné CSV a znovu přečtěte jejich hodnoty. Porovnejte je s uloženým vstupem, nikoli jen s hezky zobrazenou buňkou. Pokud potřebujete postup pro oddělovače a uvozovky, navazuje na něj rozbor chyb exportu CSV mapy.
- Původní hodnotu ponechte v neměnné kopii podkladů.
- Pracovní převod popište konkrétním pravidlem a rozsahem řádků.
- Podobné zápisy seskupujte pomocně; nepřepisujte kvůli přehledu jediný důkaz.
- Výsledek exportu ověřte na skutečném souboru připraveném k předání.
Předejte matici konkrétních případů
| Původní vstup | Porovnávaný zápis | Závěr lokálního modelu |
|---|---|---|
| /čaj/ | /%C4%8Daj/ | Stejná zpracovaná hodnota |
| /a%2Fb/ | /a/b/ | Odlišné hodnoty, bez mapy chybí rozhodnutí |
| /a%252Fb/ | /a%2Fb/ | Odlišné hodnoty |
| /čaj/ | /caj/ | Odlišné hodnoty, nejde o odstranění diakritiky |
Tabulka zachycuje přesné příklady a konkrétní prostředí kontroly. Neříká, jak tyto adresy vyhodnotí váš produkční server, proxy nebo aplikační směrování. K předání doplňte očekávanou obsluhu každého relevantního vstupu. Správce pak může ověřit rozdíl mezi plánem a implementací, místo aby hádal, co znamená „sjednotit kódování“.
U každého případu určete také finální dokument. Dvě odlišné cesty mohou podle obsahového rozhodnutí končit na stejné náhradě, ale mohou vyžadovat samostatnou obsluhu. Jde o stejný princip jako u podobných URL v inventáři: počet obsahových cílů není automaticky počet historických vstupů.
Opravujte podklady a implementaci podle různých důkazů
Jestliže doložíte chybný převod v pracovním exportu, obnovte správnou hodnotu z původního zdroje a přegenerujte dotčené podklady. Uložte rozdíl a znovu proveďte strukturální kontrolu i pokrytí. Neopravujte server podle hodnoty, o které už víte, že vznikla až nechtěným přepisem v tabulce.
Jestliže je původní hodnota doložená a správně zahrnutá v plánu, ale server ji neobsluhuje podle zadání, předáváte implementační úkol. Důkaz má obsahovat přesný vstup, prostředí a skutečnou odpověď. Výstup lokálního parseru je podpůrná informace, nikoli náhrada provozního testu.
Neumíte-li původ hodnoty vysvětlit, ponechte nález otevřený. Zvlášť u historické adresy může být unáhlené odstranění horší než dočasně nevyřešený řádek. Postup dohledání významu pravidla nabízí historická URL mimo původní inventář.
Po změně znovu použijte přesné vstupy
- Potvrďte schválenou verzi původního inventáře, nového inventáře a mapy.
- Spusťte místní kontrolu nad těmito soubory a porovnejte konkrétní nálezy.
- Po nasazení otestujte každý relevantní přesný vstup v prostředí, kde má fungovat.
- Zaznamenejte skutečné kroky a konečný obsah, nikoli jen čitelnou podobu adresy v liště.
- Uložte rozsah kontroly a případné dosud neověřené varianty.
Pokud vaše metoda původní kódovaný zápis před odesláním sama mění, musíte to při vyhodnocení zohlednit. Záznam nesmí tvrdit otestování přesného řetězce, který se do dané vrstvy nikdy nedostal. V takovém případě dohodněte se správcem vhodný kontrolní postup a jeho podmínky popište v důkazu.
Změna jedné části adresy není převod celé URL
V tomto rozboru pracujeme s cestou. Nepřenášejte jeho příklady bez dalšího na hostname, parametry a fragment. Stejný viditelný znak může v jiné části adresy plnit jinou roli. Pokud zadání vyžaduje upravit pouze cestu, přepisování celého řetězce je širší operace a může změnit další informace, které nebyly předmětem rozhodnutí.
Například nahrazení všech výskytů určitého textu nemusí zasáhnout pouze zamýšlený segment. Může změnit hodnotu parametru, který obsahuje další adresu jako data. Z inventáře pak nepůjde poznat, zda šlo o původní vstup nebo nový výsledek hromadné úpravy. Zachovejte proto originál a u změny určete konkrétní část, pravidlo i výjimky.
Také změna všech písmen na malá není řešením procentového kódování. Můžete tím současně přepsat skutečná písmena v cestě a ztratit podstatný rozdíl původních vstupů. Vlastnost konkrétního parseru nebo příkladu nedává oprávnění takovou změnu aplikovat na celý archiv. Rozhodující je požadovaná obsluha přesných hodnot v projektu.
Před hromadným přepisem sestavte malý kontrolní soubor obsahující běžný případ, kódovanou hodnotu, opakované procento a chráněnou odlišnou cestu. U každé položky napište očekávaný výsledek. Teprve porovnáním skutečného převodu s očekáváním zjistíte, zda pravidlo dělá zamýšlenou práci. Součet stejných řádků po převodu tuto kontrolu nenahradí.
Když se převod schválí, uložte vstupní a výstupní verzi spolu s popisem rozsahu. Při následné chybě pak můžete dohledat místo změny místo opakovaného dekódování naslepo. Záznam je zvlášť užitečný při předání mezi analytikem, tabulkovým programem a systémem pro import přesměrování, protože každá vrstva může používat jiné zobrazení hodnoty.
Na závěr předání potvrďte, které podoby zůstaly samostatnými testovacími případy. Pokud některou slučujete pouze pro redakční přehled, označte toto seskupení jako pomocné. Původní adresy musí zůstat dohledatelné pro provozní ověření. Jinak se krátký seznam snadno začne používat jako jediný migrační plán a ztracené vstupy už nikdo znovu neotestuje.
Do záznamu převodu přidejte také jednu adresu, která se měnit nemá. Po úpravě porovnejte její přesnou hodnotu s originálem. Taková chráněná položka rychle odhalí, že pravidlo zasahuje i mimo zamýšlenou skupinu, přestože hlavní příklad dopadl očekávaně.
Cvičení: čistší seznam, nebo ztracený případ?
Kolega třikrát dekóduje celou URL, odstraní duplicity a porovná /a%252Fb/ s /a/b/ jako jedinou adresu. Kontrola už nic nehlásí. Původní export má ale všechny tři podoby a jejich obsluha nebyla rozhodnutá. Co je potřeba vrátit do práce?
Otevřít vysvětlení
Vraťte přesné původní hodnoty a dohledatelný původ přepisu. Zelený výsledek vznikl zúžením zadání, nikoli potvrzením správné obsluhy všech vstupů. U jednotlivých podob rozhodněte podle doloženého významu a implementace. Teprve pak upravte mapu nebo inventář a zopakujte místní i příslušné provozní ověření.
Časté otázky
Mohu před migrací dekódovat všechny URL?
Ne bez rozlišení významu znaků. Dekódování může změnit oddělovače a tím i identitu popsaného vstupu. Uchovejte původní přesné adresy a ověřte standardní zpracování i chování konkrétní aplikace na rozhodujících případech.
Je kódované lomítko stejné jako lomítko v cestě?
V místním porovnání se tyto podoby automaticky neslučují. Zda je server zpracuje stejně, je samostatná vlastnost implementace. Nevytvářejte shodu globální náhradou, dokud není potvrzený očekávaný výsledek.
Jak zapsat chybu s kódovaným znakem do evidence?
Uložte přesný původní řetězec, použitou metodu a očekávané chování. Porovnejte hodnotu před exportem a po něm. Pro sdílený model zachovejte právě rozhodující znak a ověřte, že jeho nahrazení problém nezměnilo.
Navazující rozbory
Canonical po migraci: co dělat, když cíl ukazuje na jinou URL
Co kontrola mapy ještě neověří
Všechny články SEO dílny