it-swarm-eu.dev

Jaký je nejrychlejší / nejlevnější způsob, jak implementovat přepisování URL?

Související s další otázka - pokud potřebujete implementovat přepisování URL implementovaných ASAP, jaké metody, které jste použili nebo o kterých víte, to mohou urychlit?

2
Mark Henderson

Pod 8 hodin se nám podařilo vyrobit několik stovek produktů. Zde byl náš scénář:

Měli jsme:

  • Psí ošklivé adresy URL, které byly naplněny nesmyslnými parametry
  • Vlastní vývojáři
  • Úplný přístup k databázi a schématu SQL
  • IIS6/ přepsat ISAPI (ale mohli jsme to udělat pro ostatní)

Možnost 1

Tabulka našich produktů vypadala takto:

ID | Product Name | Description | etc
-------------------------------------
001|Product 1     | This is...  | etc
002|Product 1     | This is...  | etc
003|Product 1     | This is...  | etc

Napsali jsme tedy malý dávkový program, který bude procházet naší tabulkou products a vytvářet položky v našem souboru httpd.ini (verze .htaccess ISAPI), takže jsme skončili se souborem s takto stovky záznamů:

RewriteRule (/product-1/) /DLLFolder/Requester.dll?APPLICATION=MyApp&PROGRAM=Products&ARGUMENTS=-N001 [I,O,U] * Přečtěte si prosím upozornění

Naše produkty se nemění příliš často, takže jsme to pokaždé ručně spustili pokaždé, když jsme něco přidali. Není elegantní, ale jde o to, jak rychle a levně.

Poté, všude, kde byly naše odkazy vytištěny do produktů, jsme se jen ujistili, že odkazy byly odeslány na jejich úplnou adresu URL.

Celkově to trvalo asi 8 hodin.

Možnost 2

Jedno obecné pravidlo pro přepisování URL, které vypadá takto:

RewriteRule (/products/)(.*/)(.*) /DLLFolder/Requester.dll?APPLICATION=MyApp&PROGRAM=Products&ARGUMENTS=-N$3 [I,O,U] * Přečtěte si prosím upozornění

To znamenalo, že bychom mohli psát:

/products/my/thing/whatever/the/hell/i/want/123

A přepíše na správnou adresu URL. Pak je to jen otázka změny výstupu vašich odkazů na URL.

* ZŘEKNUTÍ SE ODPOVĚDNOSTI: Moje dovednosti regexu jsou velmi rezavé a ty jsem na místě vymyslel. Mohou se mýlit. Vaše míle na skutečný regex se může lišit, ale koncept stále stojí.

2
Mark Henderson