Výukové programy 000webhost - chybové stránky s .htaccess

Ano, vím, existuje spousta takových otázek, ale nemohu najít tu, která by vyřešila můj problém, takže za cenu obdržení downvotes se na to zeptám znovu. I duplicitní odkaz mi může pomoci.

Toto je práce, kterou jsem nikdy předtím neudělal, mám tento druh URL demo.html?code=IT-ROM-FCO kde:

  • IT je IATA kód pro "Itálie"
  • ROM je IATA kód pro "Řím"
  • FCO je IATA kód pro „Aeroporto di Roma Fiumicino“.

Musím přepsat výše uvedenou adresu URL, abych se zobrazil takto airports/italy/rome/aeroporto-di-roma-fiumicinořetězce pro výsledek pocházejí ze služby API.

Znám jednoduchý přepis, který se má změnit products.php?id=7 na products/7 ale nikdy jsem takový úkol neudělal (získat URL - načíst nějaká data v PHP s daným kódem - "pěkně" vytisknout novou URL)

Jelikož opravdu nevím, jak toho dosáhnout, nemám příklad kódu, omlouvám se.

  • Musí to být provedeno v .htaccess? U něčeho tak komplikovaného má pravděpodobně smysl projít airports/italy/rome/aeroporto-di-roma-fiumicino do vaší webové aplikace a nechte ji vyřídit konverzi.
  • 1 Kolik substitucí musíte řešit? Jsou to jen tři kódy (IT, ROM, a FCO)? Jsou desítky? Stovky?
  • Mám 2 verze code parametr, první je code=IT-ROM který zobrazuje všechna letiště v Římě a existuje asi 9 000 měst ... plná verze je code=IT-ROM-FCO a zobrazuje data konkrétního letiště ... asi 16 tisíc z nich. Myslím, že vložím další parametr s názvem alias v adrese URL, abych ji mohl načíst .htaccess a vyloučit kódy
  • 25 000 substitucí je příliš mnoho na to, aby bylo možné je specifikovat v .htaccess.Nebude to fungovat dostatečně dobře.
  • 1 Konverze v .htaccess musí jít opačně. Získáte pěknou adresu URL, která přichází, a musíte ji převést na kódy, které webová aplikace používá. Pokud máte kódy v URL, nemusíte webové aplikaci vůbec předávat aliasy, můžete je jednoduše ignorovat.

Doporučil bych ponechat kódy v URL. Existuje několik výhod:

  • Kódy lze snadno udržovat statické. Názvy míst se v průběhu času často mění. Pokud tam kódy jsou, nemusíte vést záznamy o starých jménech a implementovat přesměrování na základě starých jmen.
  • Je snadné přepsat, když jsou data, která potřebujete pro webovou aplikaci, v URL. .htaccess není skvělý pro vyhledávací tabulky. Vložení 25 000 pravidel pro přepis do .htaccess by bylo zabijákem výkonu.

Doporučil bych použít URL jako: /IT-ROM-FCO/airports/italy/rome/aeroporto-di-roma-fiumicino K vložení kódů do parametru a odebrání slimáka byste použili následující pravidlo přepsání:

RewriteRule ^/?([A-Z]+-[A-Z]+(-[A-Z]+)?).* /demo.html?code=$1 [L] 

To by trvalo jakoukoli adresu URL, která má na začátku dvě nebo tři zkratky, a vložila je do parametru kódu. To by mělo podporovat buď vaše code=IT-ROM nebo code=IT-ROM-FCO případy, které jste zmínili v komentářích.

Když pak na svém webu generujete adresy URL, vložte hezkou verzi do hrefs:

 

Budete také muset „kanonizovat“ své adresy URL. URL /IT-ROM-FCO/foo-bar poté zobrazí stejný obsah. Pravděpodobně je to nejjednodušší vyřešit pomocí kanonické značky meta link rel v záhlaví stránky s hezkou adresou URL. To Googlu sdělí, která verze je vaší preferovanou adresou URL.

<link rel='canonical' href='https://example.com/IT-ROM-FCO/airports/italy/rome/aeroporto-di-roma-fiumicino'> 
  • Děkuji moc @Stephen !! Zítra budu mluvit se SEO specialistou a implementovat vaše řešení!
  • 1 Možná budete také chtít zvážit malá písmena kódů. Adresy URL se smíšenými písmeny nemusí vždy fungovat velmi dobře. Spíše fungují dobře, ale některý software se pokouší malá celá URL. Prohledávače a systémy pro správu obsahu, většinou. To může způsobit spoustu chyb při procházení.
  • Omlouvám se, Stephene, ale zdá se mi, že to nemohu zajistit. Úplná adresa URL, kterou mám, je http://webpartner.it/orariovoli/aeroporti.html?code=IT-ROM-FCO a mělo by být změněno na http://webpartner.it/orariovoli/aeroporti/fco/aeroporto-di-roma-fiumicino (nová adresa URL, kterou požádal SEO specialista, ale nefunguje se starší verzí)
  • Je třeba si uvědomit jednu věc: web, na kterém pracuji, je vytvořen pomocí Joomly! a předpokládám, že něco narušuje můj htaccess
  • Pravidla přepsání nezabrání fungování starých adres URL. Prostě nechají nové adresy URL fungovat navíc. Nejjednodušší způsob, jak zabránit Googlu v používání starých adres URL, je implementovat kanonické značky.

Pracoval pro vás: Charles Robertson | Chcete nás kontaktovat?