it-swarm-eu.dev

Chudé čisté adresy URL uživatele vs. Mod_Rewrite

Ve společnosti, kde pracuji, se chystáme navrhnout nový web a máme neshody ohledně toho, jak provádět čisté adresy URL. V uplynulém roce jsme na stávajícím webovém serveru dělali drobná vylepšení v očekávání rozsáhlého přepracování, které zahrnovalo Čisté adresy URL chudých lidí ™.

Příklad:
http://www.example.com/products/widgets/index.php

http://www.example.com/products/sprockets/index.php

U nového webu se mluví o používání mod_rewrite:

  1. Uživatel požaduje http://www.example.com/products/widgets/
  2. mod_rewrite je pošle na http://www.example.com/index.php?page=products/widgets
  3. index.php je odešle na skutečnou stránku http://www.example.com/products/widgets.php

Nechápu, jak všechno toto rigamarollové přidává nějakou hodnotu. Zaměstnanec ve prospěch mod_rewrite tvrdí, že méně adresářů se nějakým způsobem rovná snadnější údržbě.

Žádná z našich existujících stránek nevyužívá proměnné v řetězci dotazu. Veškerý obsah je v samotných skutečných souborech. Plánujeme vložit do databáze nějaký obsah, jako jsou tiskové zprávy a nadcházející veletrhy, kterých se budeme účastnit, ale velká většina stránek bude používat pouze PHP pro zahrnutí běžných HTML, jako jsou záhlaví, zápatí a navigace. Určitě bych chtěl použít mod_rewrite pro takový dynamický obsah.

Chybí mi nějaká velká výhoda, že bychom měli používat mod_rewrite pro všechno? Jsou Čisté adresy URL chudých lidí ™ dostatečné pro neadresní části našich stránek?

8
Scott

Jak je uvedeno výše, postup ve třech krocích, který jste popsali výše, se jeví nadbytečný a zbytečný. Pokud je v kroku 3 index.php vezme na „skutečnou“ stránku, proč se vůbec obtěžovat mod_rewrite? Tím se popírají výhody, které mod_rewrite nabízí. Konkrétně URL přátelská k vyhledávači a snadnější údržba stránek. Pokud se zastavíte ve druhém kroku, budete mít výhodu mod_rewrite tím, že budete mít pouze jednu stránku, ale přesto může sloužit prakticky neomezenému počtu stránek a být transparentní pro uživatele a vyhledávače, protože vidí pouze adresu URL v kroku 1.

3
John Conde

Je mýtem, že "/ pagename" nebo "/pagename.htm" jsou pro vyhledávače lepší než "/pagename.php". Alespoň na Googlu pro to rozhodně není žádný základ (a také předpokládám, že ostatní). Podobně ani „index.php? Page = pagename“ není třeba přepisovat jako „/ pagename“ - vyhledávače tyto adresy URL bez problémů pochopí a Google dokonce zaznamenal, že dává přednost tomu, aby uživatelé nepřepisovali zbytečně ( http://googlewebmastercentral.blogspot.com/2008/09/dynamic-urls-vs-static-urls.html ). Pokud tedy nevytváříte nekonečné adresy URL s parametry adresy URL, přepsané adresy URL nemusí být nutně vhodnější pro vyhledávače než nepřepsané adresy URL .

Uživatelé však mohou upřednostňovat hezké adresy URL před ošklivými nebo složitými adresami URL. Pokud má vaše hlavní starost ve výsledcích vyhledávání pěkné adresy URL, podíval bych se na mikroformát stružnice, který Google nyní podporuje ( http://googlewebmastercentral.blogspot.com/2010/09/rich-snippets- testing-tool-vylepšení.html ), protože ty mohou často poskytnout ještě lepší uživatelský dojem, pokud jde o adresy URL ve výsledcích vyhledávání. Tím se nevyřeší problém uživatelů, kteří chtějí odkazovat pěkně vypadající adresy URL, ale za předpokladu, že vaše adresy URL nejsou nekonečně složité (a vaše příklady nejsou), pravděpodobně to nepřinese měřitelný rozdíl, pokud je pro ně přepíšete případ použití. Pokud neexistuje žádný měřitelný rozdíl, pak asi nemá smysl trávit čas navrhováním a udržováním takového nastavení.

4
John Mueller

To, co nazýváte „Čisté adresy URL chudých lidí“, jsou pouze čisté adresy URL implementované prostřednictvím souborového systému. Tyto typy adres URL můžete mít pomocí mod_rewrite, stejně jako můžete mít druhý typ URL bez mod_rewrite.

Čisté adresy URL jsou přesně to, co název napovídá - adresy URL, které jsou čisté nebo vypadají čisté. Oba

http://yoursite/foo/bar

a

http://yoursite/foo/bar.php

jsou čisté adresy URL. Termín „čisté adresy URL“ neurčuje žádnou konkrétní implementaci. Čisté adresy URL můžete implementovat generováním mezipaměti .html stránek při každé aktualizaci webu, pokud chcete. mod_rewrite jednoduše umožňuje oddělit strukturu URL od struktury souboru bez přesměrování nebo rámců.

Z toho, jak to zní, v současné době nepoužíváte web řízený databází. A ačkoliv se to může technicky kvalifikovat jako dynamický web, pravděpodobně je to spíše na statickém konci spektra, pokud používáte PHP pouze k zahrnutí záhlaví/zápatí. To je v pořádku pro malé weby, které jen zřídka potřebují aktualizaci, ale jak se váš web zvětšuje, budete muset implementovat skutečný CMS.

Kde mod_rewrite svítí, když začnete brát v úvahu udržovatelnost. Namísto stovek php souborů pro každou stránku produktu (se spoustou redundantního kódu) můžete jednoduše mít jediný skript, který zpracovává všechny požadavky. Pokud ale na zobrazené webové stránky již nemáte individuální mapování skutečných souborů .php, pak budete muset použít něco jako mod_rewrite pro inteligentní směrování požadavků na stránku při zachování iluze struktury souborů/adresářů. tam.

Neměli byste se tedy obávat o další podadresář. Je to skutečnost, že pro každou stránku na svém webu vytváříte samostatný skript .php.

1
Lèse majesté

„Čisté adresy URL“ často znamenají žádný soubor ext; pomáhá skrýt podrobnosti implementace před prohlížečem. Výhodou toho je, že když se rozhodnete přesunout svůj web například „PHP na Ruby na Rails, můžete tak učinit beze změny jediné adresy URL.

Nyní, když je možné provozovat vaše stránky s ASP.net a mít názvy souborů končící na .php, pokud chcete, aby vaše adresy URL zůstaly neporušené, zdá se, že má větší smysl je dělat tak, aby se problém nikdy nemusel objevovat. .

http://www.example.com/news/2010/10/our-new-url-system/

Může to být vždy dobrá URL, i když úplně změníte základní architekturu, nebo přejdete ze statických souborů na dynamické .. nebo naopak.

1
Erik

Jak již bylo řečeno, na tom, že .php nebo ?page=, opravdu nezáleží. Na čem dělá záleží, pokud děláte něco takového:

http://www.example.com/index.php?page=13

0
Hello71

Zdá se mi, že veškerý váš obsah v databázi by byl mnohem rychlejší a snadnější udržovat a poté kopat přes velký souborový systém pokaždé, když potřebujete provést aktualizace. Jak John Mueller zmínil výše, Nice URL nezmění váš žebříček obrovským rozdílem, nicméně byste měli zvážit použití Mod_Rewrite, abyste zachovali své stávající URL a jejich hodnotu. IE pokud:

example.com/widgets/index.php má 1 000 odkazů, které na něj odkazují, a změníte to tak, že na example.com/pages/widgets.php riskujete ztrátu velké části této hodnoty (můžete ji samozřejmě přesměrovat, ale je sporné, zda nebo ne, které předají stejnou hodnotu)

Mé doporučení by bylo, kdybyste pokračovali v poskytování statického obsahu, pokračovali v používání systému souborů, pokud jej převádíte na dynamický obsah, použijte Mod_Rewrite, aby vaše aktuální struktura URL zůstala v kontaktu. Nebo pokud není možné udržovat aktuální strukturu, použijte Mod_Rewrite k vytvoření struktury, která bude stabilní pro budoucí aktualizace.

0
Joshak